资讯专栏INFORMATION COLUMN

opencv python 轮廓属性/纵横比/Extent/Solidity/等效直径/掩模/极点

AJie / 752人阅读

摘要:请注意,和最大值和最小值及它们的位置我们可以使用掩模图像得到这些参数平均颜色或平均强度在这里,我们可以找到对象的平均颜色。我们再次使用掩模完成它极点目标最上面,最下面,最左边,最右边的点

Contour Properties

1 纵横比

它是对象的边界矩形的宽度与高度的比率.

$$ Rspect Ratio = frac{Width}{Height} $$

x,y,w,h = cv2.boundingRect(cnt)
aspect_ratio = float(w)/h
2 Extent

轮廓面积和外接矩形面积的比值

$$ Extent = frac{Object Area}{Bounding Rectangle Area} $$

area = cv2.contourArea(cnt)
x,y,w,h = cv2.boundingRect(cnt)
rect_area = w*h
extent = float(area)/rect_area
3 Solidity

轮廓面积与凸包面积的比

$$ Extent = frac{Contou Area}{Convex Hull Area} $$

area = cv.contourArea(cnt)
hull = cv.convexHull(cnt)
hull_area = cv.contourArea(hull)
solidity = float(area)/hull_area
4 等效直径

与轮廓面积相等的圆形的直径

$$ Equivalent Diameter = sqrt{frac{4 imes;Contou Area}{Convex Hull Area}}quad $$

area = cv2.contourArea(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)
pixelpoints = np.transpose(np.nonzero(mask))
#pixelpoints = cv2.findNonZero(mask)

这里,两个方法,一个使用Numpy函数,另一个使用OpenCV函数(最后一个注释行)给出相同的方法。 结果也相同,但略有不同。 Numpy以(行,列)格式给出坐标,而OpenCV以(x,y)格式给出坐标。 所以答案基本上会互换。 请注意,row = x和column = y.

7 最大值和最小值及它们的位置

我们可以使用掩模图像得到这些参数:

min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(imgray,mask = mask)
8 平均颜色或平均强度

在这里,我们可以找到对象的平均颜色。 或者它可以是灰度模式下物体的平均强度。 我们再次使用掩模完成它.

ean_val = cv2.mean(im,mask = mask)
9 极点

目标最上面,最下面,最左边,最右边的点

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])

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41999.html

相关文章

  • SVG相关学习(一)SVG基础

    摘要:表示应用渐变的元素创建的边界坐标系统。控制点确定起点终点的斜率终点坐标二次贝塞尔曲线和之前一样,快捷命令会通过前一个控制点,推断出一个新的控制点。如果单独使用,那么控制点就会被认为和终点是同一个点,所以画出来的将是一条直线。 SVG 相关学习 SVG SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG viewBox viewport svg 实际大...

    BingqiChen 评论0 收藏0
  • [译]OpenCV Text Detection (EAST text detector)

    摘要:的文本检测器是一种基于新颖架构和训练模式的深度学习模型。深度学习文本检测器图文本检测全卷积网络的结构等人的图。随着和的发布,我们现在可以使用一种名为的基于深度学习的文本检测器,它基于等人的年论文一种高效精确的场景文本检测器。 by Adrian Rosebrock on August 20, 2018 in Deep Learning, Optical Character Recogn...

    VincentFF 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<