二维白色背景黑色矩形的边缘检测

本文关键字:色矩 黑色 边缘检测 背景 白色 二维 | 更新日期: 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);黑暗。这意味着你有左上角。然后简单地继续两边确定宽度和高度。

顺便说一句,你的代码中有两个额外的}。考虑到一个用于关闭类,另一个可能会导致您的代码无法编译。