具有多个阵列返回的颜色检测

时间:2015-11-06 09:32:36

标签: arrays colors return detection

我有颜色检测和多个数组返回的问题... 自从我找到" 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

有人可以帮我这个吗?..那些人:)

1 个答案:

答案 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++)
            {