позволяет сказать, что у меня есть изображение C# получить прямоугольник рамки с изображением
я хотел бы найти черный прямоугольник рамки (справа, слева, ширина, высота) в изображении (позволяет сказать, что нет никаких других черных пикселей в это изображение). мой код до сих пор:
private unsafe Bitmap GetDiffBitmap(Bitmap bmp)
{
bmData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat);
IntPtr scan0 = bmData.Scan0;
int stride = bmData.Stride;
int nWidth = bmp.Width;
int nHeight = bmp.Height;
for(int y = 0; y < nHeight; y++)
{
//define the pointers inside the first loop for parallelizing
byte* p = (byte*)scan0.ToPointer();
p += y * stride;
for (int x = 0; x < nWidth; x++)
{
//always get the complete pixel when differences are found
if(p[0]==0 && p[1]==0 && p[2]==0)
{
// p[0] = 255;
// p[1] = 255;
// p[2] =255;
right = nWidth;//geting the position of the lastest black pixel;
}
p += 4;
}
}
bmp.UnlockBits(bmData);
return bmp;
}
его, кажется, как мой nwidth также как изображение по ширине, так ее не работает .. я получил-доступ к этим пикселей, и я могу изменить их, но я не знаю, почему я могу сосчитать и найти правильные границы черного прямоугольника ... если кто-то может мне помочь я бы действительно apperciate его,
да .. глупая ошибка .. пришлось использовать 'x' вместо' nWidth' ... tnx. –
и что вы имели в виду вместо нуля? @Sors –
qitapi, принимающий ответ, будет приятным :) Я имел в виду, что часто у вас есть «черные» значения RGB, такие как (2,1,3) вместо (0,0,0), поэтому вы должны проверить, чем ваш порог вместо проверки на 0 – Sors