Quantcast
Channel: OpenCV Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 2088

How to threshold 3 colors using trackbars ?

$
0
0
Hi, I have a task says " Threshold three colours using trackbars. Paint the blobs to corresponding colors." I have created the track bars and they work fine but how can I do this task ? unfortunately , they don't give us enough info in the class on how to solve it . import numpy as np import cv2 # open the camera cap = cv2.VideoCapture(0) def nothing(x): pass cv2.namedWindow('result') # Starting with 100's to prevent error while masking h,s,v = 100,100,100 # Creating track bar cv2.createTrackbar('h', 'result',0,179,nothing) cv2.createTrackbar('s', 'result',0,255,nothing) cv2.createTrackbar('v', 'result',0,255,nothing) while True: #read the image from the camera ret, frame = cap.read() #You will need this later frame = cv2.cvtColor(frame, 35) #converting to HSV hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV) # get info from track bar and appy to result h = cv2.getTrackbarPos('h','result') s = cv2.getTrackbarPos('s','result') v = cv2.getTrackbarPos('v','result') # Normal masking algorithm lower_blue = np.array([h,s,v]) upper_blue = np.array([180,255,255]) mask = cv2.inRange(hsv,lower_blue, upper_blue) result = cv2.bitwise_and(frame,frame,mask = mask) cv2.imshow('result',result) #find center cnts=cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[-2] center=None if len(cnts)>0: c=max(cnts, key=cv2.contourArea) ((x,y),radius)=cv2.minEnclosingCircle(c) M=cv2.moments(c) center=(int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"])) if radius>10: #cv2.circle(frame, (int(x),int(y)), int(radius), 2) cv2.circle(frame, center,5,(0,0,255),-1) # color detection limits lB = 5 lG = 50 lR = 50 hB = 15 hG = 255 hR = 255 lowerLimits = np.array([lB, lG, lR]) upperLimits = np.array([hB, hG, hR]) # Our operations on the frame come here thresholded = cv2.inRange(frame, lowerLimits, upperLimits) outimage = cv2.bitwise_and(frame, frame, mask = thresholded) cv2.imshow('original', frame) # Display the resulting frame cv2.imshow('processed',outimage) # Quit the program when Q is pressed if cv2.waitKey(1) & 0xFF == ord('q'): break # When everything done, release the capture print 'closing program' cap.release() cv2.destroyAllWindows()

Viewing all articles
Browse latest Browse all 2088

Trending Articles