第一次接触VC图像处理,在CDib类里有个判断图像灰度的函数:BOOL CDib::IsGrade()
{
return (GetBitCount()<9&&GetBitCount()>0);
}GetBitCount()是获取每个像素占的位数,仅仅依据这个来判断图像灰度的吗?

解决方案 »

  1.   

    灰度图像的值的范围就是(0-255),用一个字节就行了,所以用8位就行了,通过判断每个像素所占的位数可以来判定是否为灰度图像,如果每个像素所占位数为24位,那么就有可能是RGB图等其他彩色图像。
      

  2.   

    这个不准确。8位可能是调色板的索引值。你最好根据颜色来判断。rgb的值一样就是灰度。无论是8位还是16位或者24位。都是如此。
      

  3.   

    8位有可能是256彩色的. 根据调色版来判断, RGB相同是灰度.
      

  4.   

    用Photoshop这个软件的对灰度图像的定义来说,灰度必须满足一下几个条件:1、必须是8位或者4位的图像。
    2、调色板每个元素的各分量(Red,Green,Blue)必须相等。
      

  5.   

    楼主应该先看下bmp的头文件定义,那样可以很清楚的知道 如何判断图像是什么图像
      

  6.   

    我觉得这段代码的意思是判断图像是否是单字节灰度图像,因为一般bmp彩图都是16、24、32位,真彩色24位RGB各占1字节,32位的多了一个字节可以储存RGBA信息。如果你要写函数返回图像像素的灰度(亮度)一般是采用(R+G+B)/3类似的形式。
      

  7.   


    我觉得,如果一副彩色图中最多只有256种彩色,然后每个像素(8bits)存放颜色表的索引。