2017-03-09 35 views
0

我想利用二值化的OpenCV INRANGE功能HSV顏色空間中的圖像如何處理在順大的變化。同時使用門檻的rangle

我發現,與某些RGB值,色調值急劇地變化。對於例如 1)RGB值:56,40,39及其HSV值:2,77,56 2)RGB值:56,40,41及其HSV值:178,73,56

因此,在這種情況下,兩個RGB顏色非常接近,看起來也很相似,但它的色調值有很大的差別,現在如果我們使用Hue範圍從2到178進行二值化而不是錯誤。

那麼應該怎麼使用閾值範圍進行二值化的正確方法和圖像在HSV色彩空間。

+0

@Miki在這裏有一個很好的答案... http://stackoverflow.com/a/32523532/2836621 –

回答

1

你必須記住,HSV表示的H分量是循環的,就像在一個時鐘數,與「規範」的範圍爲[0,360)(還有其它選項,如在[0,1)或[ 0,180),利用不同的通道深度,在你的情況下它是[0,180)以適應uchar範圍)。

實現你想要的最簡單的方法是自己迭代圖像像素,檢查2條件,如下所示:(h > 170) || (h < 10)並根據是否爲真分配二進制值。

它可以幫助繪製你的價值圈,看看什麼範圍的做自己想做的覆蓋,你應該使用什麼表情了點。

+0

感謝您的回覆... –

+0

你的意思是說,我應該檢查最低和最高值之間的距離有兩種方法。 1)順時針和2)逆時針。然後最後哪個給出最小距離,我們應該考慮這個範圍。例如是低色調= 20和高色調= 150,則順時針距離爲130,逆時針距離爲(180-150)+20 = 50.因此,在這種情況下應該檢查h> 150 h <20。 –

+0

不一定。您需要決定您需要的圈子的哪個部分,而不一定是較小的圈子。 – alexisrozhkov