I'm currently learning how to use Open CV for python and I am trying to write a program to see an image in real time from a webcam based off of an hsv value range. When I run the program I am able to get the webcam to work (it shows a black screen as expected) but the trackbars to adjust the hsv range are not showing for some reason. Anyone have any solutions? Thanks.
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()
The second argument of cv2.createTrackbar('H','frame',0,255,nothing)
should be the name of the window that will show the trackbars. You've used frame
, but there doesn't seem to be a window named frame
opened in your code. You could do so by adding
cv2.namedWindow('frame')
or by changing your display line to
cv2.imshow('frame', mask)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.