我想将彩色BMP文件转换为灰度BMP。输入bmp是24位,我在输出端产生相同的24位bmp,只有这次是灰度级的。将彩色bmp转换为灰度bmp?
我使用的代码是
for(int x = 0; x < max; x++)
{
int lum;
lum = (r[x]*0.30) + (g[x]*0.59) + (b[x]*0.11);
r[x] = lum;
g[x] = lum;
b[x] = lum;
}
的r
,g
,b
数组是RGB颜色分量,我有他们在一个char *r,*g,*b
。
由于某些原因,我没有得到一个干净的输出。我附上了我得到的这个问题的输出,其不完整,并包含白色和黑色的区域。那么我在这里做错了什么?
- 这是由于计算lum中的数据丢失还是在将int存储为char时出现错误?
- 灰度bmp不能是24位吗?或者是我在存储转换后的rgb值的方式有问题?
在这方面的任何帮助将大大appriciated。谢谢。
你可以添加你的代码?如何将图像加载到矩阵中并执行此过程并保存它?谢谢! – 2013-05-10 14:18:03