import cv2,sys import numpy as np cap = cv2.VideoCapture(1) def mayorContorno(contornos): mayor=0;puntosmax=0;i=0 for cont in contornos: # print puntosmax, len(cont) if puntosmax < len(cont): mayor = i puntosmax=len(cont) i = i + 1 return mayor def minimaDistanciaShapeContornos(contornos,cnt1): mindist=10000; i=0;inmindist = 0 for cont in contornos: ret = cv2.matchShapes(cont,cnt1,1,0.0) if mindist > ret: print ret mindist=ret indmindist = i i = i + 1 return indmindist def guardar_contorno(contorno,clase): archivo = open("contornos.txt","w+") archivo.write(clase+" "); for punto in contorno: print punto," " archivo.write(str(punto[0])) # primer ciclo para obtener el contorno base while(1): ret ,frame = cap.read() img_gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) ret, thresh = cv2.threshold(img_gray, 127, 255,0) contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) mayor= mayorContorno(contours) cnt1 = contours[mayor] cv2.drawContours(frame,[cnt1],-1, (255,0,0), 3) cv2.imshow('Primer Contorno',frame) k = cv2.waitKey(60) & 0xff if k == 27: guardar_contorno(cnt1,sys.argv[1]); break while(1): ret ,frame = cap.read() img_gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) ret, thresh = cv2.threshold(img_gray, 127, 255,0) contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) mayor= minimaDistanciaShapeContornos(contours,cnt1) cnt = contours[mayor] cv2.drawContours(frame,contours, mayor, (255,255,0), 3) cv2.imshow('img',frame) k = cv2.waitKey(60) & 0xff if k == 27: break cv2.destroyAllWindows() cap.release()