多数组颜色检测 return
Color detection with multiple array return
我在颜色检测和多数组返回方面遇到问题...
自从我找到 "Tuple" 机器后,我试图在黑色背景上找到白色像素(是的,它们是白色的)。我可以给你一个我用过的代码,这样你就可以想象发生了什么:
private Tuple<int[], int[]> Find(Image<Gray, byte> bmp)
{
int rows = bmp.Rows;
int cols = bmp.Cols;
byte[,,] imgByte = bmp.Data;
int[] x = new int[10];
int[] y = new int[10];
for (int i = 0; i <= rows;i++)
{
for (int j = 0; j <= cols; j++)
{
if (imgByte[i, j, 0] == 255 && imgByte[i, j, 1] == 255 && imgByte[i, j, 2] == 255)
{
x[i] = i;
y[j] = j;
}
}
}
return Tuple.Create(x,y);
}
此代码由按钮启动:
private void button1_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(pictureBox1.Image);
Image<Gray, byte> img = new Image<Gray, byte>(bmp);
textBox1.Text = Find(img).ToString();
}
好的总结是我需要找到那些像素并将它们写在某处(文本框或其他东西......没关系),其中 "x" 是 x 标签,"y" 是 y 标签。
这段代码只给我一个异常,告诉我索引超出了数组的范围...
最后一件事是我使用的图片:Picture
有人可以帮我解决这个问题吗?谢谢大家 :)
改变这个
int[] x = new int[10];
int[] y = new int[10];
至此
int[] x = new int[rows];
int[] y = new int[cols];
否则,如果您的图片大于 10x10 像素,它将以 OutOfBoundsException 结束。
你也超过了for循环,改变这个
for (int i = 0; i <= rows;i++)
{
for (int j = 0; j <= cols; j++)
{
对此
for (int i = 0; i < rows;i++)
{
for (int j = 0; j < cols; j++)
{
我在颜色检测和多数组返回方面遇到问题... 自从我找到 "Tuple" 机器后,我试图在黑色背景上找到白色像素(是的,它们是白色的)。我可以给你一个我用过的代码,这样你就可以想象发生了什么:
private Tuple<int[], int[]> Find(Image<Gray, byte> bmp)
{
int rows = bmp.Rows;
int cols = bmp.Cols;
byte[,,] imgByte = bmp.Data;
int[] x = new int[10];
int[] y = new int[10];
for (int i = 0; i <= rows;i++)
{
for (int j = 0; j <= cols; j++)
{
if (imgByte[i, j, 0] == 255 && imgByte[i, j, 1] == 255 && imgByte[i, j, 2] == 255)
{
x[i] = i;
y[j] = j;
}
}
}
return Tuple.Create(x,y);
}
此代码由按钮启动:
private void button1_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(pictureBox1.Image);
Image<Gray, byte> img = new Image<Gray, byte>(bmp);
textBox1.Text = Find(img).ToString();
}
好的总结是我需要找到那些像素并将它们写在某处(文本框或其他东西......没关系),其中 "x" 是 x 标签,"y" 是 y 标签。
这段代码只给我一个异常,告诉我索引超出了数组的范围...
最后一件事是我使用的图片:Picture
有人可以帮我解决这个问题吗?谢谢大家 :)
改变这个
int[] x = new int[10];
int[] y = new int[10];
至此
int[] x = new int[rows];
int[] y = new int[cols];
否则,如果您的图片大于 10x10 像素,它将以 OutOfBoundsException 结束。
你也超过了for循环,改变这个
for (int i = 0; i <= rows;i++)
{
for (int j = 0; j <= cols; j++)
{
对此
for (int i = 0; i < rows;i++)
{
for (int j = 0; j < cols; j++)
{