2012-10-06 52 views
2

以下是使用OpenCV中的cvCvtColor函數將灰度圖像轉換爲RGB的簡單代碼片段。無法在OpenCV中將灰色轉換爲BGR

input = cvLoadImage("test.jpg", CV_LOAD_IMAGE_GRAYSCALE); 
output = cvCreateImage(cvSize(input->width, input->height), 8, 3); 
cvCvtColor(input, output, CV_GRAY2BGR); 
cvSaveImage("output.jpg", output); 

where test.jpg是灰度圖像。

但它似乎沒有正常工作,因爲output.jpg即最終輸出也是灰度,與輸入本身相同。爲什麼這樣 ?

任何形式的幫助將不勝感激。提前致謝 !

+2

'但它似乎沒有正常工作,因爲output.jpg即最終輸出也是灰度,與輸入本身相同。爲什麼如此?'如果輸入是灰度,那麼輸出也是灰度。這是邏輯上的。你期望看到什麼?彩色圖像? – ArtemStorozhuk

+0

但我已經加載了灰度圖像,我想將它轉換爲RGB,與我們有時將彩色圖像轉換爲灰度相同。 – Koustav

+3

你期望什麼結果?有三個通道(RGB)而不是隻有一個的圖像?或者實際上是圖像的彩色版本? (例如,之前灰色的蘋果現在變成綠色) – Niko

回答

9

我想你誤解了cvCvtColor。 cvCvtColor(input, output, CV_GRAY2BGR);會將單通道圖像更改爲3通道圖像。但是,如果你看圖像,它仍然看起來像一個灰色的圖像,因爲,例如,154的灰色像素已被轉換爲RGB(154,154,154)。

將彩色圖像轉換爲灰色圖像時,所有顏色信息都將消失且無法恢復。因此,如果沒有附加信息和相應的操作,您無法真正製作灰色圖像以可視化彩色圖像。

+0

非常感謝。現在明白了。 :) – Koustav

+1

對於未來的讀者,'cvCvtColor'是C++版本的openCV中的'cvtColor'。 –