import cv2 import numpy as np cap = cv2.VideoCapture(0) while(True): # Take each frame _, frame = cap.read() # Convert BGR to HSV hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # define color range in HSV lower_range = np.array([78,75,150]) upper_range = np.array([138,255,255]) # Threshold the HSV image to get only blue colors mask = cv2.inRange(hsv, lower_range, upper_range) kernel =cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5)) mask = cv2.erode(mask, kernel, iterations=2) mask = cv2.dilate(mask, kernel, iterations=4) # Bitwise-AND mask and original image res = cv2.bitwise_and(frame,frame, mask= mask) #Detectamos contornos, nos quedamos con el mayor y calculamos su centro _, contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) if contours != []: mayor_contorno = max(contours, key = cv2.contourArea) momentos = cv2.moments(mayor_contorno) cx = float(momentos['m10']/momentos['m00']) cy = float(momentos['m01']/momentos['m00']) cv2.circle(res, (int(cx), int(cy)), 5, (0,255,0), -1) cv2.imshow('frame',frame) cv2.imshow('mask',mask) cv2.imshow('res',res) k = cv2.waitKey(5) & 0xFF if k == 27: break cv2.destroyAllWindows()