我目前正在学习如何使用python的Open CV,我正在尝试编写一个程序,以从基于hsv值范围的网络摄像头实时查看图像。当我运行程序时,我能够让网络摄像头工作(它像预期的那样显示一个黑屏),但由于某种原因,用于调整hsv范围的跟踪条不显示。有人有什么解决方案吗?谢谢。
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()发布于 2014-11-09 11:59:51
cv2.createTrackbar('H','frame',0,255,nothing)的第二个参数应该是将显示轨迹栏的窗口的名称。您已经使用了frame,但是在您的代码中似乎没有打开一个名为frame的窗口。您可以通过添加
cv2.namedWindow('frame')或者将显示行更改为
cv2.imshow('frame', mask)https://stackoverflow.com/questions/26824777
复制相似问题