二维白色背景黑色矩形的边缘检测
本文关键字:色矩 黑色 边缘检测 背景 白色 二维 | 更新日期: 2023-09-27 18:04:46
我正在寻找白色背景的黑色矩形的边缘,但是我不知道如何找到矩形的边缘。
目前的代码是:
private void Vicky(object sender, MouseEventArgs e)
{
OpenFileDialog file = new OpenFileDialog();
if (file.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = new Bitmap(file.FileName);
}
}
private void process(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(pictureBox1.Image);
for (int i = 0; i < bmp.Width; i++)
{
for (int j = 0; j < bmp.Height; j++)
{
Color pixelColor = bmp.GetPixel(i, j);
if (pixelColor.R == 0 && pixelColor.G == 0 && pixelColor.B == 0)
{
for (int x = i; x < bmp.Width; x++)
{
for (int y = x; y < bmp.Height; y++)
{
}
}
} // end if.
} // end inner for.
} //end outer for.
pictureBox1.Image = bmp;
} //end process.
你就不能把4个方向都试一遍直到找到一个非白色的像素吗?
int left, right, top, bottom;
for (int x = i; x < bmp.Width; x++)
{
Color c = bmp.GetPixel(x, y);
if (c.R != 0 || c.G != 0 || c.B != 0) {
right = x;
break;
}
}
for (int x = i; x > 0; x--)
{
Color c = bmp.GetPixel(x, y);
if (c.R != 0 || c.G != 0 || c.B != 0) {
left = x;
break;
}
}
// ... Two more loops for top and bottom
如果你确定边缘是1px宽和直,你可以测试bmp。获取像素(i + 1, j);和bmp。获取像素(i, j + 1);黑暗。这意味着你有左上角。然后简单地继续两边确定宽度和高度。
顺便说一句,你的代码中有两个额外的}。考虑到一个用于关闭类,另一个可能会导致您的代码无法编译。