-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgetContours.py
More file actions
40 lines (28 loc) · 1.14 KB
/
getContours.py
File metadata and controls
40 lines (28 loc) · 1.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import cv2
import numpy as np
def getContours(img,imgContour):
contours, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)
for cnt in contours:
area = cv2.contourArea(cnt)
#print(area)
if area>500:
cv2.drawContours(imgContour, cnt, -1,(255,0,0),3)
peri = cv2.arcLength(cnt,True)
#print(peri)
approx = cv2.approxPolyDP(cnt,0.02*peri,True)
#print(len(approx))
objCor = len(approx)
x, y, w, h = cv2.boundingRect(approx)
if objCor == 3:
objectType = "Triangle"
elif objCor == 4:
aspRatio = w/float(h)
if aspRatio > 0.95 and aspRatio < 1.05:
objectType = "Square"
else:
objectType = "Rectangle"
elif objCor > 4:
objectType = "Circle"
else: objectType="None"
cv2.rectangle(imgContour,(x,y),(x+w,y+h),(0,255,0),2)
cv2.putText(imgContour,objectType, (x+(w//2)-10,y+(h//2)-10),cv2.FONT_HERSHEY_COMPLEX,0.5,(0,255,255),2)