簡體   English   中英

無法使用cimg庫將圖像正確保存到文件中

[英]Can't save image to file properly with cimg library

這是我的全部代碼:

#include "CImg.h"
#include <iostream>

using namespace cimg_library;
int main() {

CImg<float> image(100,100,1,3,0);
const float color[] = {1.0,1.0,0.0};
image.draw_point(50,50,color);
image.save("file.bmp");
CImgDisplay local(image, "Hah");
while (true) {
    local.wait();
    }   

}

這成功地顯示了我在窗口中所期望的內容,即一個白色像素為50,50的完全黑色正方形。 但是,file.bmp只是一個黑色正方形,沒有那個像素(並且保存了一個cimg圖像,該圖像已經通過在較大的程序中重復調用draw_point而修改,該程序執行一些有用的操作也會失敗)。 這里發生了什么?

問題是您在啟用規范化的情況下創建CImgDisplay 因此, {1,1,0}像素標准化為{255,255,0}並在屏幕上顯示。

CImg.save不執行規范化,因此像素以非常暗的像素保存到磁盤。

您可以通過更改白色像素顏色來解決問題:

const float color[] = {255.,255.,255.};

並且,可選地,通過禁用標准化:

CImgDisplay local(image, "Hah", 0);

或者,您可以在保存或顯示原始圖像之前將其標准化:

image.draw_point(50,50,color);
image.normalize(0, 255);
image.save("file.bmp");

參考文獻:

我不熟悉這個庫,但是這種行為會暗示CImgDisplay在渲染時會以不同的方式解釋圖像。

我希望將白色的顏色定義為const unsigned char color[] = {255,255,255}; 表示位圖的RGB值。

我會檢查CImg的文檔作為第一步。

暫無
暫無

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

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