[英]CImg on binary image data
我使用X11 xGetImage拍攝快照后創建了一個二進制文件,並將數據字段的內容存儲在二進制文件中 (該文件已壓縮。請解壓縮它)。 現在,我正在與CImg一起玩耍並學習其用法。
第一個問題
因此,我使用load_rgba函數在此二進制數據上嘗試了CImg
CImgDisplay *disp;
CImg <float>img1,img2; //I don't why,it only works with float, with int it gives gray colour and with unsigned int it gives black foreground
img2 = img1.load_rgba("imagedata",1366,768); //1366 X 768 is the dimension of my image that i got from X11
disp = new CImgDisplay(1024,768,"window");
disp->display(img2);
現在,我可以在窗口中看到圖像,但是質量下降了。 所以我試圖看一下代碼,發現
在34318行
assign(dimw,dimh,1,4); // the depth is assigned to 1. which i believe is the culprit, however i would like confirm it
以及為什么僅在為模板傳遞float時才起作用?
第二個問題現在,我想使用CImg,方法是先自己讀取文件,然后使用此代碼將緩沖區的指針移交給Cimg。
int main() {
char *data;
int size = 1366*768*4; //1366 X 768 is the dimension of my image that i got from X11 and 4 is number of bits per pixel
ifstream file ("imagedata", ios::in|ios::binary|ios::ate);
data = new char[size];
file.read (data, size);
CImgDisplay *disp;
CImg <float>img3(data,1366,768,1,4);
disp = new CImgDisplay(1024,768,"window");
disp->display(img3);
getchar();
return 0;
}
在相同的imagedata上運行此代碼(如第一種情況),我得到的只是一個黑色窗口。 此外,設置第四個參數(即depth(z))會導致分割錯誤
我在這里做錯了什么?
第二個問題現在,我想使用CImg,方法是先自己讀取文件,然后使用此代碼將緩沖區的指針移交給Cimg。
CImg數據格式: http ://cimg.eu/reference/group__cimg__storage.html
如果要手動從緩沖區初始化CImg對象,則應自行設置此數組。
這是jpeg圖像的示例,對於其他格式,您可以檢查源(函數名稱: _load_png , _load_jpeg等):
https://github.com/EyalAr/lwip/blob/master/src/decoder/jpeg_decoder.cpp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.