python - OpenCV - Trackbar slider keeps going to zero with video -
i'm trying use slider control lower , upper bounds hsv masking. i'm able slider can't hold position set; keeps going 0 each time new frame pulled in.
import numpy np import cv2 def nothing(x): pass cap = cv2.videocapture(0) while(true): # make window video feed cv2.namedwindow('frame',cv2.cv_window_autosize) # capture frame-by-frame ret, frame = cap.read() # make trackbar used hsv masking cv2.createtrackbar('hsv','frame',0,255,nothing) # name variable used mask bounds j = cv2.gettrackbarpos('hsv','image') # convert bgr hsv hsv = cv2.cvtcolor(frame, cv2.color_bgr2hsv) # define range of color in hsv lower = np.array([j-10,100,100]) upper = np.array([j+10,255,255]) # threshold hsv image selected color mask = cv2.inrange(hsv, lower, upper) # bitwise-and mask original image res = cv2.bitwise_and(frame,frame, mask= mask) # display resulting frame cv2.imshow('frame',res) # press q quit if cv2.waitkey(3) & 0xff == ord('q'): break # when done, release capture cap.release() cv2.destroyallwindows()
you creating track-bar inside while loop, that's why getting new track-bar on each frame.
so change code like,
# make window video feed cv2.namedwindow('frame',cv2.cv_window_autosize) # make trackbar used hsv masking cv2.createtrackbar('hsv','frame',0,255,nothing) while(true): # capture frame-by-frame ret, frame = cap.read() ........................ ........................
Comments
Post a Comment