Сторони паралельні координатним осям, виділено лише один контур
def boundingRect(img):
if len(img.shape)==3:
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
copy=img.copy()
else:
img_gray=img
copy=cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)
cnt=find_cont(img)
x,y,w,h = cv2.boundingRect(cnt[0])
cv2.rectangle(copy,(x,y),(x+w,y+h),(0,255,0),2)
return copy
Обмежуючий прямокутник мінімальної площі, виділено лише один контур
def MinBboundingRect(img):
if len(img.shape)==3:
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
copy=img.copy()
else:
img_gray=img
copy=cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)
cnt=find_cont(img)
rect = cv2.minAreaRect(cnt[0])
box = cv2.boxPoints(rect).astype(np.uint64)
cv2.drawContours(copy,[box],0,(0,0,255),2)
return copy
Обмежувальне коло, виділено один контур
def MinKolo(img):
if len(img.shape)==3:
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
copy=img.copy()
else:
img_gray=img
copy=cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)
cnt=find_cont(img)
(x,y),radius = cv2.minEnclosingCircle(cnt[0])
center = (int(x),int(y))
radius = int(radius)
return cv2.circle(copy,center,radius,(0,255,0),2)
Лінія головного напрямку, виділено один контур
def FitLine(img):
if len(img.shape)==3:
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
copy=img.copy()
else:
img_gray=img
copy=cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)
rows,cols = copy.shape[:2]
[vx,vy,x,y] = cv2.fitLine(cnt[0], cv2.DIST_L2,0,0.01,0.01)
lefty = int((-x*vy/vx) + y)
righty = int(((cols-x)*vy/vx)+y)
return cv2.line(copy,(cols-1,righty),(0,lefty),(0,255,0),2)
Немає коментарів:
Дописати коментар