2013-05-15 73 views
0

我試圖用函數cvCvtColor()將RGB圖像轉換爲HSV,但結果是意外的。例如,白色被轉換成接近紅色的東西。使用cvCvtColor()問題的HSV轉換

 cvCvtColor(img, hsv, CV_BGR2HSV); 
     cvSplit(hsv, h, s, v, NULL); 
     cvInRangeS(h,cvScalar(0,0,0,0),cvScalar(20,0,0,0),imgthresh); 
     cvShowImage("image", img); 
     cvShowImage("hsv", hsv); 
     cvShowImage("threshold", imgthresh); 

圖像轉換是否正確,只顯示錯誤? 關於閾值,更好的方法是使用3個通道或僅使用色調? 我想追蹤紅色物體。 對不起英文。 謝謝。

回答

3

cvShowImage將始終期望RGB值(或BGR,我不確定)。所以,當你轉換成HSV時,預計顏色顯示不同。使用這個rgb to hsv conversor,你可以看到在RGB中白色 - 表示爲(255,255,255) - 在HSV中被轉換爲(0,0,100%)。正如你所說白色的顯示顏色是紅色的,我懷疑cvShowImage默認是預期BGR。

+2

'cvShowImage()'和'cv :: imshow()'預計BGR通道排序。 – Aurelius