import cv2 import numpy as np def nothing(x): pass # Create a black image, a window #img = np.zeros((300,512,3), np.uint8) cv2.namedWindow('image') cv2.namedWindow('hsv') cv2.namedWindow('masq') cap = cv2.VideoCapture(0) # create trackbars for color change cv2.createTrackbar('R-low','image',0,255,nothing) cv2.createTrackbar('R-high','image',255,255,nothing) cv2.createTrackbar('G-low','image',0,255,nothing) cv2.createTrackbar('G-high','image',255,255,nothing) cv2.createTrackbar('B-low','image',0,255,nothing) cv2.createTrackbar('B-high','image',255,255,nothing) while(1): ret, img = cap.read() # Convert BGR to HSV hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) cv2.imshow('image',img) k = cv2.waitKey(1) & 0xFF if k == 27: break # get current positions of four trackbars rl = cv2.getTrackbarPos('R-low','image') rh = cv2.getTrackbarPos('R-high','image') gl = cv2.getTrackbarPos('G-low','image') gh = cv2.getTrackbarPos('G-high','image') bl = cv2.getTrackbarPos('B-low','image') bh = cv2.getTrackbarPos('B-high','image') lower = np.array([rl,gl,bl]) upper = np.array([rh,gh,bh]) # print(rl) img[:] = [bl,gl,rl] # Threshold the HSV image to get only certain colors mask = cv2.inRange(hsv, lower, upper) res = cv2.bitwise_and(img,img, mask= mask) #cv2.imshow('res',res) cv2.imshow('masq',mask) cv2.imshow('hsv',hsv) cv2.destroyAllWindows()