为什么收到此错误“带有索引像素格式的图像不支持'SetPixel'”

时间:2018-12-30 17:40:03

标签: c# image-thresholding

我正在尝试对图像进行阈值处理。类型为“ tif”的图像,我收到此错误提示

  

具有索引像素格式的图像不支持SetPixel

这是我的代码,p11是图像名称

for (int r = 0; r < p11.Width; r++)
{
    //  whiteColor = 0;
    //  blackColor = 0;
    for (int c = 0; c < p11.Height; c++)
    {
        num1 = int.Parse(p11.GetPixel(r, c).A.ToString()); // gets the alpha component value of this colout
        num2 = int.Parse(p11.GetPixel(r, c).B.ToString()); // gets the Blue component value of this colout
        num3 = int.Parse(p11.GetPixel(r, c).R.ToString()); // gets the Red component value of this colout
        num4 = int.Parse(p11.GetPixel(r, c).G.ToString()); // gets the green component value of this colout

        if( T <= num1 && T <= num2 && T <= num3 && T <= num4)
        {

        }
        else
        {
            p11.SetPixel(r, c, Color.Black);
        }
    }
}

1 个答案:

答案 0 :(得分:2)

索引像素格式是指图像数据不包含直接颜色而是包含调色板的条目的调色板,该调色板间接引用颜色。每像素8位以下的图像通常是索引图像。要访问实际颜色列表,请参见Palette的{​​{1}}属性。

Bitmap不能用于这些图像,因为它期望使用颜色作为参数。要处理图像内容,您需要通过SetPixel方法获得BitmapData。在下面的示例中,LockBits获取一个调色板索引并返回另一个索引。

TransformColor