diff --git a/software/firmware/cam.py b/software/firmware/cam.py index cf824e7..e557d00 100644 --- a/software/firmware/cam.py +++ b/software/firmware/cam.py @@ -9,21 +9,14 @@ contours, hierarchy = cv2.findContours(thresh1,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) drawing = np.zeros(img.shape,np.uint8) - - max_area=0 - - for i in range(len(contours)): - cnt=contours[i] - area = cv2.contourArea(cnt) - if(area>max_area): - max_area=area - ci=i - cnt=contours[ci] + + cnt = max(contours, key = cv2.contourArea) hull = cv2.convexHull(cnt) moments = cv2.moments(cnt) + if moments['m00']!=0: - cx = int(moments['m10']/moments['m00']) # cx = M10/M00 - cy = int(moments['m01']/moments['m00']) # cy = M01/M00 + cx = int(moments['m10']/moments['m00']) # cx = M10/M00 + cy = int(moments['m01']/moments['m00']) # cy = M01/M00 centr=(cx,cy) cv2.circle(img,centr,5,[0,0,255],2) @@ -33,21 +26,19 @@ cnt = cv2.approxPolyDP(cnt,0.01*cv2.arcLength(cnt,True),True) hull = cv2.convexHull(cnt,returnPoints = False) - if(1): - defects = cv2.convexityDefects(cnt,hull) - mind=0 - maxd=0 - for i in range(defects.shape[0]): - s,e,f,d = defects[i,0] - start = tuple(cnt[s][0]) - end = tuple(cnt[e][0]) - far = tuple(cnt[f][0]) - dist = cv2.pointPolygonTest(cnt,centr,True) - cv2.line(img,start,end,[0,255,0],2) - - cv2.circle(img,far,5,[0,0,255],-1) - print(i) - i=0 + defects = cv2.convexityDefects(cnt,hull) + + for i in range(defects.shape[0]): + s,e,f,d = defects[i,0] + start = tuple(cnt[s][0]) + end = tuple(cnt[e][0]) + far = tuple(cnt[f][0]) + dist = cv2.pointPolygonTest(cnt,centr,True) + cv2.line(img,start,end,[0,255,0],2) + cv2.circle(img,far,5,[0,0,255],-1) + + print(i) + cv2.imshow('output',drawing) cv2.imshow('input',img)