首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将彩色bmp转换为灰度bmp?

将彩色bmp转换为灰度bmp?
EN

Stack Overflow用户
提问于 2010-11-10 18:16:02
回答 2查看 5.8K关注 0票数 1

我正在尝试将彩色BMP文件转换为灰度BMP文件.输入bmp是24位,我正在生产相同的24位bmp在输出,只是这次在灰阶。

我使用的代码是

代码语言:javascript
复制
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;
}

rgb数组是RGB颜色组件,我将它们放在char *r,*g,*b中。

出于某些原因,我没有得到一个干净的输出。我是附加的输出,我得到了这个问题,它的零碎,并包含白色和黑色的区域在棕榈树。那我在这里做错什么了?

  1. 是由于lum计算中的数据丢失造成的,还是将int存储为一个字符有什么问题?
  2. 可以灰度bmp不是24位吗?或者在转换后存储rgb值的方式有问题吗?

在这方面的任何帮助都会很有见地。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-10 18:20:32

这些代码应该是unsigned char;如果char碰巧是在您的平台上签名的,那么这段代码将无法实现您的期望。

票数 6
EN

Stack Overflow用户

发布于 2010-11-10 18:20:33

您需要将计算的输出夹在0,255中。你的计算看起来还不错,但确定一下总是好的。

还要确保r,g,b数组是unsigned char。你可以在int中进行大量的符号/无符号混合(由于2的补码溢出覆盖错误),但是当你转换为浮动时,符号必须是正确的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4147639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档