我试图找到白色背景的黑色矩形边缘,但我不知道如何找到矩形的边缘。
到目前为止,代码是:
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.
答案 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个额外的}。考虑到一个用于关闭类,另一个可能导致您的代码无法编译。