python opencv改变图像尺寸,python图像边缘opencv
轮廓属性
纵横比是对象边框的宽度和高度之比。
$ $ r预期比率=\frac{Width}{Height} $$
x,y,w,h=cv2。bounding rect(CNT)aspect _ ratio=float(w)/轮廓面积与外接矩形面积的比率。
$ $ Extent=\ frac { Object Area } { Bounding Rectangle Area } $ $
面积=CV2。轮廓面积(CNT) x,y,w,h=CV2。bounding rect(CNT)rect _ area=w * h Extent=float(area)/rect _ area 3轮廓区域与凸包区域的实体比率
$ $ Extent=\ frac { Contou Area } {凸包面积} $$
面积=cv。轮廓面积(CNT)外壳=cv。凸包(CNT) hull _ area=cv。轮廓面积(hull)实度=float (area)/hull _ area4圆的当量直径等于轮廓面积。
$$当量直径=\ sqrt { \ frac { 4 \ times \轮廓区域} {凸包区域} } \四边形$$
area=cv2 . contour area(CNT)equi _ diameter=NP . sqrt(4 * area/NP . pi)5方向就是物体朝向的角度。下面的方法也给出了长轴和短轴的长度。
(x,y),(ma,ma),angle=cv2.fitellipse (CNT) 6蒙版和像素点在某些情况下,我们可能需要包含对象的所有点。您可以这样做:
mask=np.zeros(imgray.shape,np.uint8)cv2.drawContours(mask,[cnt],0,255,-1) Pixel points=np.transpose (np .非零(mask))# Pixel points=cv2 . find非零(mask)这里给出了两个方法,一个使用Numpy函数,另一个使用OpenCV函数(最后一行注释)给出了相同的方法。结果是一样的,但略有不同。Numpy给出(行,列)格式的坐标,OpenCV给出(x,y)格式的坐标。所以答案基本可以互换。请注意,行=x,列=y .
7最大值和最小值及其位置我们可以使用掩模图像来获得这些参数:
Min _ val,max _ val,min _ loc,max _ loc=cv2.minmax loc (img ray,mask=mask) 8平均颜色或平均强度在这里,我们可以求出物体的平均颜色。或者它可以是灰度模式下物体的平均强度。我们用面具再次完成它。
Ean _ val=cv2.mean (im,mask=mask) 9极点目标的顶部、底部、左侧和右侧点
最左边=tuple(cnt[cnt[:0])。argmin()][0])最右边=tuple(cnt[cnt[:0]。arg max()][0])topmost=tuple(CNT[CNT[:1]。arg min()][0])bottom most=tuple(CNT[CNT[:1]。argmax()][0])
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。