gpt4 book ai didi

c++ - 将彩色 bmp 转换为灰度 bmp?

转载 作者:太空宇宙 更新时间:2023-11-03 10:35:42 26 4
gpt4 key购买 nike

我正在尝试将彩色 BMP 文件转换为灰度 BMP。输入 bmp 是 24 位,我在输出端生成相同的 24 位 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;
}

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

由于某些原因,我没有得到干净的输出。我附上了这个问题的输出,它是不完整的,并且在一些地方包含白色和黑色区域。那么我在这里做错了什么?

  1. 是因为计算 lum 时数据丢失还是将 int 存储为 char 有问题?
  2. 灰度bmp不能是24位的吗?还是我在转换后存储 rgb 值的方式有问题?

在这方面的任何帮助都将不胜感激。谢谢。

最佳答案

这些应该是unsigned char;如果 char 恰好在您的平台上签名,那么此代码将不会执行您期望的操作。

关于c++ - 将彩色 bmp 转换为灰度 bmp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4147639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com