我有颜色检测和多个数组返回的问题... 自从我找到" 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();
}
好的总结是我需要找到那些像素并将它们写在某处(文本框或其他东西......没关系),其中&#34; x&#34;是x标签和&#34; y&#34;是标签。
这段代码只给我一个异常,告诉我像索引在数组范围之外的东西......
最后一件事是我使用的图片:Picture
有人可以帮我这个吗?..那些人:)
答案 0 :(得分:0)
更改此
int[] x = new int[10];
int[] y = new int[10];
到这个
int[] x = new int[rows];
int[] y = new int[cols];
否则,如果您的图片大于10x10像素,则以OutOfBoundsException结束。
你也超过了周期,改变这个
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++)
{