2017-02-09 67 views
0

我正在使用OpenCV和Python開發可以在圖像中查找目標模式的軟件。我目前正在尋找所需的目標,其中一部分正在運行HSV閾值操作以隔離目標的顏色。該HSV閾值的代碼如下所示:如果成功,OpenVV中的HSV閾值應該返回什麼?

out = cv2.cvtColor(input, cv2.COLOR_RGB2HSV) 
return cv2.inRange(out, (hue[0], sat[0], val[0]), (hue[1], sat[1], val[1])) 

hue[]sat[],並且val[]在代碼的其他地方定義,幷包含經實驗檢驗值我正在尋找的HSV範圍的陣列。運行此方法後,我添加了打印語句以打印輸出。當我在我的相機幀運行這個方法,它的返回這樣的:

[[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 0 0]] 

我試圖用氣球的不同股票的圖像包含許多不同的顏色,它返回同樣的事情。如果正確工作,我很難找到關於HSV方法應該返回的文檔,所以我不確定如何調試。

有沒有人知道我應該看到什麼類型的輸出,如果事情工作正常和/或有任何例子?

+0

cv2.inRange()返回一個二進制圖像,這是像素陣列,而不是一個單一的值。因此,所有0都對應於閾值後圖像中的黑色像素。 嘗試使用imshow查看您的圖像。另外,你如何定義「正常工作」?請分享一些圖片來說明您期望的輸出 –

+0

FYI務必檢查[OpenCV顏色轉換指標](http://docs.opencv.org/2.4/modules/imgproc/doc/miscellaneous_transformations.html#cvtcolor),手動閾值時非常重要! –

+0

請提供out.dtype,色相,飽和度和色度的下限和上限。 –

回答

0

我已經解決了這個問題,我想把它放在這裏以防萬一任何人有類似的問題並在以後搜索它。

將圖像打印到窗口對我非常有幫助,因爲我的網絡瀏覽器爲IP攝像頭,GRIP顯示窗口和OpenCV圖像都略有不同,因此我從GRIP獲取的閾值數字不起作用根本沒有,只返回一個黑色的圖像。

下面是如何打印圖像窗口,看看你正在使用的是什麼:

cv2.imshow('image', img) #img is your image, 'image' is the name of the window you'll create 
cv2.waitKey(0) #handles GUI elements, and causes the window to close when you press any key 
cv2.destroyAllWindows() 
相關問題