2010-06-11 135 views
2

我試圖從我的攝像頭顯示圖像的色相組件。我已將圖像拆分爲色相組件,但我無法弄清楚如何將色相組件顯示爲純色。例如,如果圖像的一個像素是B = 189 G = 60 R = 60,那麼在HSV中,H = 0。我不希望的拉伸圖像是色調或灰度值,但RGB等效色相H = 0 - > B = 0 G = 0,R = 255Opencv:將色調圖像轉換爲RGB圖像

IplImage *image, *imageHSV, *imageHue; 
image = cvQueryFrame(capture); //image from webcam 
imageHSV = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 3); 
imageHue = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1); 
cvCvtColor(image, imageHSV, CV_BGR2HSV); 
cvSplit(imageHSV, imageHue, 0, 0, 0); 

我有一種感覺有是一個簡單的解決方案,所以任何幫助,讚賞

+0

您可以通過點擊他/她答案旁邊的空白複選標記來接受zerm的答案爲正確答案。您也可以通過點擊答案旁邊的向上箭頭來對其進行修改。 – 2010-06-28 17:40:10

回答

3

如果我正確地理解了你,你想要「正確」可視化Hue組件。您可以創建另一個imageSatimageVal,每個單通道並填充255(最大值)。然後cvMerge你的imageHue與其他兩個,創建一個新的HSV圖像,並將其轉換回RGB/BGR最終顯示。

+0

完美的作品,謝謝!我之前嘗試過cvMerge,但我想我從來沒有想過用最大值填充每個圖像。 – jhaip 2010-06-11 12:54:14

+0

如果你不關心S/V,你不需要分割它,只需將它們設置到最大。 我不知道,但我認爲cvSetCOI(hsvimg,2); cvSet(hsvimg,255);以及相同的3可能已經工作。當你完成後,不要忘了重置COI(感興趣的頻道)回0(=沒有頻道,使用整個圖像)。 – zerm 2010-06-11 13:47:10

相關問題