我从图像中获取像素时遇到问题。我加载一个图像,从图像中选择一个像素并检索它的颜色然后我生成一个矩阵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;
}
答案 0 :(得分:1)
这里没有明显的失败模式。除此之外,像素实际上与颜色不匹配。例如,在Color.B值中只有一个。你无法用肉眼看到这一点。
当调整图像大小时,这种非常微妙的颜色变化非常常见。即使不是严格需要,插值滤波器也会巧妙地改变颜色。另一种失败模式是使用像JPEG这样的压缩图像格式,压缩算法会改变颜色。