2014-11-09 34 views
0

我目前正在學習如何使用Open CV for python,並且我正在嘗試編寫一個程序,以從基於hsv值範圍的網絡攝像頭實時查看圖像。當我運行該程序時,我能夠使網絡攝像頭正常工作(它按預期顯示黑屏),但由於某種原因沒有顯示調整hsv範圍的軌道條。任何人都有解決方案?謝謝。爲什麼此Python Open CV程序中的軌跡條不顯示?

import cv2 
import numpy as np 
cap = cv2.VideoCapture(0) 

def nothing(x): 
    pass 


#creates three trackbars for color change 
cv2.createTrackbar('H','frame',0,255,nothing) 
cv2.createTrackbar('S','frame',0,255,nothing) 
cv2.createTrackbar('V','frame',0,255,nothing) 

while(1): 
    # Capture frame-by-frame 
    _, frame = cap.read() 

    #creates trackbars 
    h = cv2.getTrackbarPos('H','frame') 
    s = cv2.getTrackbarPos('S','frame') 
    v = cv2.getTrackbarPos('V','frame') 


    # Converts from BGR to HSV 
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) 

    # define color strenght parameters in HSV 
    weaker = np.array([h+10, s+10, v+10]) 
    stronger = np.array([h-10,s-10,v-10]) 


    # Threshold the HSV image to obtain input color 
    mask = cv2.inRange(hsv, weaker, stronger) 

    #displays mask 
    cv2.imshow('Result',mask) 

    #terminates program 
    if cv2.waitKey(1) == ord('q'): 
     break 

cv2.waitKey(0) 
cv2.destroyAllWindows() 

回答

1

cv2.createTrackbar('H','frame',0,255,nothing)的第二個參數應該是將顯示軌跡條的窗口的名稱。您已使用frame,但在您的代碼中似乎沒有打開名爲frame的窗口。您可以通過添加

cv2.namedWindow('frame') 

或者改變您的顯示行

cv2.imshow('frame', mask) 
這樣做