我正在尝试使用其中一种算法将 RGB 图像转换为灰度:
亮度方法平均最突出和最不突出的颜色:(max(R, G, B) + min(R, G, B)) / 2。
平均方法只是对值进行平均:(R + G + B) / 3。
光度的公式是 0.21 R + 0.71 G + 0.07 B。
但我得到了非常奇怪的结果!我知道还有其他方法可以实现这一点,但可以这样做吗?
这是代码:
for(int i = 0 ; i < eWidth*eHeight;i++){
int R = (pixels[i] >> 16) ; //bitwise shifting
int G = (pixels[i] >> 8) ;
int B = pixels[i] ;
int gray = (R + G + B )/ 3 ;
pixels[i] = (gray << 16) | (gray << 8) | gray ;
}