在第2个黑颜色长方形的边缘检测有白色背景

时间:2014-05-22 09:38:29

标签: c# image-processing image-recognition

我试图找到白色背景的黑色矩形边缘,但我不知道如何找到矩形的边缘。

到目前为止,

代码是:

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.

2 个答案:

答案 0 :(得分:0)

在找到不是白色的像素之前,您是否只能转到所有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

答案 1 :(得分:0)

如果你确定边缘是1px宽直,你可以测试bmp.GetPixel(i + 1,j);和bmp.GetPixel(i,j + 1);为了黑暗。这意味着你有左上角。然后继续在两侧继续确定宽度和高度。

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