2017-03-16 126 views
0

我有一個手機,它是HSV直方圖像打擊,我想跟蹤它的直方圖這款手機的movement.Based,我設定的圖像範圍是這樣的:如何在OpenCV中設置HSV顏色範圍?

greenLower = (300, 0, 50) 
greenUpper = (50, 128,250) 
cv2.inRange(hsv, greenLower, greenUpper) 

但沒有得到檢測出揮動手機時,我很確定這是因爲顏色範圍是錯誤的,你會告訴我如何讓顏色響起設置正確嗎?特別是當HUE值在[300〜50]之間時,我應該將它設置爲(50〜300)還是(300〜50)由於HUE是一個cirle。

Phone 

Phone

HSV histogram: 

HSV Histogram

+0

你是如何獲得HSV?似乎有點奇怪,只有飽和度是0.0到1.0之間的浮點數。 |通過閱讀[documentation](http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#inrange)可以回答關於'inRange'的問題。 –

回答

0

你錯誤設定了上限和下限,它們必須是:

greenLower = (50, 0, 50)   # Previously (300, 0, 50) 
greenUpper = (300, 128, 250)  # Previously (50, 128,250) 

還要確保hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)爲OpenCV的如下BGR約定。

編輯:

來段色多個範圍0~50300~359,您可以執行cv2.inRange()兩次,兩個範圍爲:

greenLower1 = (0, 0, 20)   
greenUpper1 = (50, 128, 100)  

greenLower2 = (300, 0, 20)   
greenUpper2 = (359, 128, 100)  

mask1 = cv2.inRange(img_hsv, greenLower1, greenUpper1) 
mask2 = cv2.inRange(img_hsv, greenLower2, greenUpper2) 

mask = cv2.max(mask1, mask2) 
+0

仍然沒有檢測到任何東西,你會建議在一個單一的範圍50〜300或兩個範圍0〜50和300〜359匹配色調值 –

+1

它會在範圍'50〜300'工作,並且在我的機器上工作正常與您的輸入圖像,您是否已正確地將輸入圖像轉換爲HSV? – ZdaR

+0

@ ZdarR,謝謝,我已經按照你的建議將圖像轉換爲HSV,根據直方圖,真正的範圍應該是0〜50和300〜359,我只是不知道如何將這兩個圖像合併爲一個。 –