CImg:如何保存灰度
CImg: How to save a grayscale?
当我使用CImg
加载.BMP
时,我怎么知道它是灰度图像还是彩色图像?我尝试过如下,但失败了:
cimg_library::CImg<unsigned char> img("lena_gray.bmp");
const int spectrum = img.spectrum();
img.save("lenaNew.bmp");
出乎我意料,无论我加载了哪种.BMP
,频谱都将始终为3。因此,当我加载灰度并保存它时,结果大小将比实际大 3 倍。
我只想在加载时保存相同的图像。如何另存为灰度?
我想 BMP 格式始终将图像存储为 RGB 编码数据,因此读取 BMP 将始终生成彩色图像。如果您知道您的图像是标量,则所有通道都将相同,因此您可以丢弃其中两个(此处保留第一个)。
img.channel(0);
如果要检查它是否是标量图像,可以测试通道之间的相等性,如
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++ 中将 RGB 更改为灰度
- OpenCV - 如何在灰度图像上应用 Kmeans?
- OpenCV - 如何将灰度转换为彩色(CV_8UC3)?
- C++灰度图像处理
- 如何显示具有 opengl 纹理的灰度图像
- C++ Gdi+将图像转换为灰度
- 将 BMP 图像转换为灰度
- 如何使用Canny到32位灰度
- 颜色到灰度转换
- (C++)(Visual Studio) 将高斯模糊滤镜应用于 RGB 中的灰度图像
- 使用 SSE 以最快的速度缩小 8 位灰度图像
- 使用 OpenCV 和 C++将 16 位灰度图像更改为彩色图像
- 有没有办法使用 glDrawPixel 渲染单通道灰度图像?
- goodFeaturesToTrack() 只适用于灰度?
- 如何在OpenCV中减去两个不同尺寸的图像和灰度图像
- 使用 ImageMagick 从像素强度数组创建灰度图像时遇到问题
- 如何将图像转换为灰度 opengl c++
- 将高斯模糊应用于灰度图像
- 魔鬼库:保存灰度图像在三个矩阵而不是一个
- CImg:如何保存灰度