c#getPixel没有选择所有像素

时间:2010-10-14 16:35:58

标签: c# image bitmap pixel

我从图像中获取像素时遇到问题。我加载一个图像,从图像中选择一个像素并检索它的颜色然后我生成一个矩阵indexMatrix [bitmap_height] [bitmap_width],其中包含1或0,具体取决于位图的[x,y]颜色是否与颜色选择。问题是程序没有选择所有像素,尽管它应该。它只检索它们的一部分(我确定像素'忘记'与所选颜色的颜色相同)

奇怪的是,如果我为新图像(从矩阵构造的图像)运行我的程序,它将返回相同的图像(应该如此),但我无法弄清楚如何解决问题。

请帮助!!!

此致 亚历克斯巴德斯库 以及我项目中的一些代码:

位图声明:

m_Bitmap = (Bitmap)Bitmap.FromFile(openFileDialog.FileName, false);

这里我计算矩阵:

int bitmapWidth = m_Bitmap.Width;
        int bitmapHeight = m_Bitmap.Height;


        indexMatrix = new int[bitmapHeight][];

        if (imageIsLoaded && colorIsSelected)
        {
            for (int i = 0; i < bitmapHeight; i++)
            {
                indexMatrix[i] = new int[bitmapWidth];

                for (int j = 0; j < bitmapWidth; j++)
                {
                    Color temp = m_Bitmap.GetPixel(j, i);
                    if (temp == selectedColor)
                        indexMatrix[i][j] = 1;
                    else indexMatrix[i][j] = 0;


                }
            }
            MessageBox.Show("matrix generated succesfully");
        }
        matrixIsCalculated = true;
    }

1 个答案:

答案 0 :(得分:1)

这里没有明显的失败模式。除此之外,像素实际上与颜色不匹配。例如,在Color.B值中只有一个。你无法用肉眼看到这一点。

当调整图像大小时,这种非常微妙的颜色变化非常常见。即使不是严格需要,插值滤波器也会巧妙地改变颜色。另一种失败模式是使用像JPEG这样的压缩图像格式,压缩算法会改变颜色。