[英]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.