轮廓性质

长宽比

x,y,w,h=cv2.boundingRect(cnt)
aspect_ratio=float(w)/h
print(aspect_ratio)
1.0220264317180616

轮廓面积与边界矩形面积之比

area=cv2.contourArea(cnt)
x,y,w,h=cv2.boundingRect(cnt)
rect_are=w*h
extent=float(area)/rect_are
print(extent)
0.41421084611879083

轮廓面积与凸包面积之比

area=cv2.contourArea(cnt)
hull=cv2.convexHull(cnt,False)
hull_area=cv2.contourArea(hull)
solidity=float(area)/hull_area
print(solidity)
0.7786403954953508

方向

(x,y),(MA,ma),angle=cv2.fitEllipse(cnt)
print(‘中心坐标:’,(x,y),‘长短轴’,(MA,ma),‘角度’,angle)
中心坐标: (184.0423126220703, 161.87728881835938) 长短轴 (136.0299530029297, 263.36798095703125) 角度 135.5540313720703

掩模与像素点

mask=np.zeros(imgray.shape,np.uint8)
cv2.drawContours(mask,[cnt],0,255,-1)
pixelpoints=np.transpose(np.nonzero(mask))
print(pixelpoints)

最大值与最小值及位置

minval,maxval,minloc,maxloc=cv2.minMaxLoc(imgray,mask=mask)
print(minval,maxval,minloc,maxloc)
0.0 255.0 (185, 65) (182, 53)

平均颜色

meanval=cv2.mean(imgray,mask=mask)

极点:一个对象最上面,最下面,最左边,最右边点

leftmost=tuple(cnt[cnt[:,:,0].argmin()][0])
rightmost=tuple(cnt[cnt[:,:,0].argmax()][0])
topmost=tuple(cnt[cnt[:,:,1].argmin()][0])
bottommost=tuple(cnt[cnt[:,:,1].argmax()][0])

猜你喜欢

转载自blog.csdn.net/qq_41244435/article/details/86655123