我正在尝试对图像进行阈值处理。类型为“ 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);
}
}
}
答案 0 :(得分:2)
索引像素格式是指图像数据不包含直接颜色而是包含调色板的条目的调色板,该调色板间接引用颜色。每像素8位以下的图像通常是索引图像。要访问实际颜色列表,请参见Palette
的{{1}}属性。
Bitmap
不能用于这些图像,因为它期望使用颜色作为参数。要处理图像内容,您需要通过SetPixel
方法获得BitmapData
。在下面的示例中,LockBits
获取一个调色板索引并返回另一个索引。
TransformColor