다음 방법을 사용하여 이진 이미지에서 원하는 가장자리의 경계를 얻으려고합니다. 슬프게도 내 수학은 나를 실망시키는 것처럼 보입니다. 원본 이미지보다 각 치수가 2 배 작은 직사각형을 얻을뿐입니다.이진 이미지에서 경계 사각형 계산
누군가 내가 잘못한 곳을 표시 할 수 있습니까?
참고. FastBitmap은 픽셀 데이터에 빠르게 액세스 할 수있는 클래스입니다.
private Rectangle FindBox(Bitmap bitmap, byte indexToRemove)
{
int width = bitmap.Width;
int height = bitmap.Height;
int minX = width;
int minY = height;
int maxX = 0;
int maxY = 0;
using (FastBitmap fastBitmap = new FastBitmap(bitmap))
{
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
if (fastBitmap.GetPixel(x, y).B == indexToRemove)
{
if (x < minX)
{
minX = x;
}
if (x > maxX)
{
maxX = x;
}
if (y < minY)
{
minY = y;
}
if (y > maxY)
{
maxY = y;
}
}
}
}
}
// check
if ((minX == width) && (minY == height) && (maxX == 0) && (maxY == 0))
{
minX = minY = 0;
}
return new Rectangle(minX, minY, maxX - minX + 1, maxY - minY + 1);
}
이미지를 테스트하고 있습니다.
건배. 내 뇌는 확실히 오프 모드였습니다. 그것은 쉬운 비트 였을 것입니다. –