2014-06-05 178 views
0

現在,我已經完成從CMOS攝像頭讀取原始圖像並使用雙線性插值計算R,G,B紅綠藍。現在的問題是,我剛剛讀了示例代碼有這一部分:將原始圖像轉換爲BMP彩色圖像

image_t = (unsigned char *)malloc((size_t)width * height * 3); 

*(image_t + 3 * (width * y + x) + 2) = R; 
*(image_t + 3 * (width * y + x) + 1) = G; 
*(image_t + 3 * (width * y + x) + 0) = B; 

我覺得image_t是像素包含的RGB值的存儲空間。但我不清楚爲什麼我們需要爲R添加3 * (width * y + x) + 2 image_t?我知道(**width * y + x**)是數組中像素的位置。對於R,G,B,分別爲和加法2,1,0?

回答

1

image_t是指向包含圖像數據的內存區域的指針。它的長度爲width * height * 3:以像素爲單位的圖像寬度,乘以像素的圖像高度乘以每像素的字節數。

該圖像中的每個像素都是3個字節:R,G和B值各佔一個字節。所以像素在陣列中的位置實際上是3 * (width * y + x)。這就是來自哪裏。

2,1和0是像素內R,G和B值的字節偏移量。 R位於像素位置+ 2,G位於像素位置+ 1,B位於像素位置+ 0.

+0

謝謝,我沒有得到足夠的信譽評分。所以我不能爲你投票。 –

+0

親愛的pmcoltrane,你可以看看我的程序,並解釋爲什麼我不能讀取BMP圖像?我的代碼沒有錯誤,但BMP文件不好。 –

+0

https://docs.google.com/file/d/0B4cT5Zob7lRCLU5WVUxPZ2xZd1k/edit –

相關問題