gpt4 book ai didi

c++ - CImg:如何保存灰度?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:35:04 24 4
gpt4 key购买 nike

当我使用CImg 加载.BMP 时,如何知道它是灰度图像还是彩色图像?我试过如下,但失败了:

cimg_library::CImg<unsigned char> img("lena_gray.bmp");

const int spectrum = img.spectrum();

img.save("lenaNew.bmp");

按照我的预期,无论我加载了什么样的.BMP,spectrum 总是3。因此,当我加载灰度并保存它时,结果大小将比它大 3 倍。

我只想保存与加载时相同的图像。如何保存为灰度图?

最佳答案

我猜 BMP 格式总是将图像存储为 RGB 编码数据,因此读取 BMP 总是会产生彩色图像。如果您知道图像是标量的,则所有 channel 都相同,因此您可以丢弃其中两个(此处保留第一个)。

img.channel(0);

如果你想检查它是一个标量图像,你可以测试 channel 之间的相等性,如

const CImg<unsigned char> R = img.get_shared_channel(0),
G = img.get_shared_channel(1),
B = img.get_shared_channel(2);
if (R==G && R==B) {
.. Your image is scalar !
} else {
.. Your image is in color.
}

关于c++ - CImg:如何保存灰度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5933893/

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