////24位的位图转换成8位的灰度图
double r = (double)(rgb[nIndex].rgbRed);
double g = (double)(rgb[nIndex].rgbGreen);
double b = (double)(rgb[nIndex].rgbBlue);
BYTE c = (BYTE)(r*0.29900 + g*0.58700 + b*0.11400);
对于人眼来说,亮度信号是最敏感的,如果将彩色图像转换为灰度图像,仅仅需要转换保存亮度信号就可以。
从 RGB 到 YUV 空间的 Y 转换公式为:
Y = 0.299R+0.587G+0.114B
/////32位转换成8位的灰度图
32位的真彩图是由ARGB构成,A表示通明度,去掉高8位,也就是第一个字节,就和24位转换成8位一样了
////也有人这样
BYTE Y=(BYTE )(Red*0.299+Green*0.587+Blue*0.114);/////24转成8位
BYTE Y=(BYTE )(Red*0.299+Green*0.587+Blue*0.1140+0.5);/////32转换成8位
转换成不同位的灰度图可以这样:Y = Y/ (1<<(8- 转换的位数 )); 转换的位数可以为:1,2,4, 8。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。