【问题标题】:c# getPixel not sellecting all pixelsc# getPixel 不出售所有像素
【发布时间】:2010-10-14 16:35:57
【问题描述】:

我在从图像中获取像素时遇到问题。我加载一个图像,从图像中选择一个像素并检索它的颜色,然后我生成一个矩阵 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;
    }

【问题讨论】:

  • 您应该做的第一件事是选择一个您知道错误的像素,让调试器在该点暂停(添加一个 if 语句并中断它) .然后查看temp 与selectedColor 相比的值。或者,将indexMatrix 转换为单色图像并检查它可能更容易。
  • 你怎么知道只检索了一些像素?由于 GetPixel 在逐个像素的基础上运行,您能否判断 GetPixel 是否没有按照您对这些像素的预期工作,或者是否没有为那些“丢失的”像素调用它?乍一看,一切对我来说都很好,除了您可能会考虑将 temp == selectedColor 更改为 temp.Equals(selectedColor) ,因为我想您可以有两种颜色具有相应的 A、R、G、B 值与 == 匹配(我不肯定他们会通过 Equals,但我假设他们会这样做:))

标签: c# image bitmap pixel


【解决方案1】:

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

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

【讨论】:

  • 我在paint中创建了一个.bmp,程序运行良好。问题是,据我所知,.jpg 在转换时会对某些像素应用颜色的细微变化。有没有办法解决这个问题?
  • 热狗,当我没有任何提示地猜对问题时,我喜欢它。在您的情况下,处理 jpeg 是一个有损的提议。只是不要打扰,png格式很好。紧凑并且没有随机的颜色变化。
猜你喜欢
  • 2018-12-19
  • 2011-07-07
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
  • 1970-01-01
  • 2016-09-20
相关资源
最近更新 更多