簡體   English   中英

使用CImg編輯RGB像素數據-Visual C ++ 2008

[英]Edit RGB pixel data using CImg - Visual C++ 2008

使用CImg:我在這里讀到,您可以像這樣更改單個像素的RGB數據:

CImg<float> img("filename.jpg");
// Change the (100,200) pixel to Red.
img(100,200,0,0) = 255; //R
img(100,200,0,1) = 0; //G
img(100,200,0,2) = 0; //B

但是img(100, 200, 0, 0)返回類型unsigned char * ,這顯然不是上述代碼段所暗示的變量。 當我運行上面的代碼時,我的生成輸出中出現“錯誤C2106:'=':左操作數必須為l值”。

可能的解決方案是使用其他版本的CImg構造函數,該構造函數將原始像素數據作為其第一個參數,但是在通過構造函數運行數據之前,我找不到有關如何格式化數據的任何信息-在CImg.h的 9671行中描述為模板。

任何幫助將不勝感激; 我已經有一段時間了。

表達式img(100,200,0,0)不是一個unsigned char*而是一個unsigned char& ,這有很大的不同。 當然,您可以毫無問題地編寫img(100,200,0,0) = value (除非您的img變量是const ),我一直都在使用它。 還要注意,第三個參數在您的情況下可以省略,因為它始終為0 ,因此您可以編寫img(x,y,0)=255; img(x,y,1)=1; img(x,y,2)=1; img(x,y,0)=255; img(x,y,1)=1; img(x,y,2)=1;

查看CImg包中提供的示例,您將看到許多代碼使用CImg<T>::operator()這樣。 希望 !

您可以使用函數draw_point

從參考手冊中:

CImg&draw_point(const int x0,const int y0,const int z0,const tc ∗ const color,const floatopacity = 1)

暫無
暫無

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

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