多数组颜色检测 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++)
            {