《OpenCV轻松入门:面向Python》读书笔记
作者:李立宗
出版社:电子工业出版社
出版时间:2019-05
第12章 图像轮廓
12.7 轮廓的特征值
轮廓自身的一些属性特征及轮廓所包围对象的特征对于描述图像具有重要意义。
- 轮廓自身的属性特征
- 轮廓所包围对象的特征。
12.7.1 宽高比
可以使用宽高比(AspectRation)来描述轮廓,
例如矩形轮廓的宽高比为:宽高比=宽度(Width)/高度(Height)
12.7.2 Extent
可以使用轮廓面积与矩形边界(矩形包围框、矩形轮廓)面积之比Extend来描述图像及其轮廓特征。
计算方法为:Extend=轮廓面积(对象面积)/矩形边界面积
12.7.3 Solidity
可以使用轮廓面积与凸包面积之比Solidity来衡量图像、轮廓及凸包的特征。
12.7.4 等效直径(Equivalent Diameter)
可以用等效直径来衡量轮廓的特征值,该值是与轮廓面积相等的圆形的直径。
其计算公式为:
12.7.5 方向
在OpenCV中,函数cv2.fitEllipse()可以用来构造最优拟合椭圆,还可以在返回值内分别返回椭圆的中心点、轴长、旋转角度等信息。
使用这种形式,能够更直观地获取椭圆的方向等信息。
12.7.6 掩模和像素点
有时,我们希望获取某对象的掩模图像及其对应的点。12.1.3节介绍了将函数cv2.drawContours()的轮廓宽度参数thickness设置为“-1”,即可获取特定对象的实心轮廓,即特定对象的掩模。
另外,我们可能还希望获取轮廓像素点的具体位置信息。
一般情况下,轮廓是图像内非零的像素点,可以通过两种方式获取轮廓像素点的位置信息。
- 一种是使用Numpy函数,
numpy.nonzero()函数能够找出数组内非零元素的位置,但是其返回值是将行、列分别显示的。 - 另外一种是使用OpenCV函数。
OpenCV提供了函数cv2.findNonZero()用于查找非零元素的索引。该函数的语法格式为:
12.7.7 最大值和最小值及它们的位置
OpenCV提供了函数cv2.minMaxLoc(),用于在指定的对象内查找最大值、最小值及其位置。
12.7.8 平均颜色及平均灰度
OpenCV提供了函数cv2.mean(),用于计算一个对象的平均颜色或平均灰度。
12.7.9 极点
有时,我们希望获取某个对象内的极值点,例如最左端、最右端、最上端、最下端的四个点。OpenCV提供了tuple()函数来找出这些点
网友评论