簡體   English   中英

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.
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM