第八章

1. 查找并绘制轮廓

(1) 寻找轮廓:findContours() 函数

opencv不规则轮廓抠图 opencv 轮廓 锯齿_点集


opencv不规则轮廓抠图 opencv 轮廓 锯齿_opencv不规则轮廓抠图_02

注:

opencv不规则轮廓抠图 opencv 轮廓 锯齿_二维_03


(2) 绘制轮廓:drawContours()函数

opencv不规则轮廓抠图 opencv 轮廓 锯齿_opencv不规则轮廓抠图_04


opencv不规则轮廓抠图 opencv 轮廓 锯齿_点集_05

层次结构信息:

2. 寻找物体的凸包

(1) 凸包概念:

opencv不规则轮廓抠图 opencv 轮廓 锯齿_点集_06

(2) 寻找凸包函数:convexHull()

opencv不规则轮廓抠图 opencv 轮廓 锯齿_二维_07

3. 根据轮廓提取多边形

(1) 返回外部矩阵边界:boundingRect() 函数

opencv不规则轮廓抠图 opencv 轮廓 锯齿_二维_08


(2) 寻找最小包围矩阵:minAreaRect()函数

opencv不规则轮廓抠图 opencv 轮廓 锯齿_拟合_09


(3) 寻找最小包围圆形:minEnclosingCiecle()函数

opencv不规则轮廓抠图 opencv 轮廓 锯齿_点集_10


opencv不规则轮廓抠图 opencv 轮廓 锯齿_opencv不规则轮廓抠图_11


(4) 用椭圆拟合二维点集:fitEllipse()函数

opencv不规则轮廓抠图 opencv 轮廓 锯齿_二维_12


(5) 逼近多边形曲线:approxPolyDP()函数

opencv不规则轮廓抠图 opencv 轮廓 锯齿_点集_13

注:轮廓vertor容器contours[i]应该是包含了很多坐标信息,比如一个contours[0]就是一个轮廓的二维坐标点集

4. 图像的矩:其实就是一个综合特性的描述子(满足平移,伸缩,旋转的不变性),从而可以计算长度和面积

(1) opencv中计算图像的矩

opencv不规则轮廓抠图 opencv 轮廓 锯齿_二维_14


(2) 矩的计算函数:moments()–可以由此函数的返回值作为参数,通过contourArea()和arcLength()函数来计算面积和长度

opencv不规则轮廓抠图 opencv 轮廓 锯齿_点集_15


(3) 计算轮廓面积:contourArea()

opencv不规则轮廓抠图 opencv 轮廓 锯齿_opencv不规则轮廓抠图_16


(4) 计算轮廓长度:arcLength()函数

opencv不规则轮廓抠图 opencv 轮廓 锯齿_拟合_17


opencv不规则轮廓抠图 opencv 轮廓 锯齿_二维_18


opencv里的Moments成员变量的理解:(5) 分水岭算法

怎么感觉"漫水填充算法"和”分水岭填充算法"的核心思想差不多。

I. 漫水填充算法(主要是选种子点,然后设定阈值,自动选中了和种子点相连的区域,接着将该区域替换成指定的颜色):

II. 掩模(就是遮掉不需要的部分):用选定的图像、图形或物体,对待处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程。用于覆盖的特定图像或物体称为掩模或模板。

opencv不规则轮廓抠图 opencv 轮廓 锯齿_二维_19


(1)watershed()函数

opencv不规则轮廓抠图 opencv 轮廓 锯齿_opencv不规则轮廓抠图_20


6.图像修补

opencv不规则轮廓抠图 opencv 轮廓 锯齿_拟合_21


opencv不规则轮廓抠图 opencv 轮廓 锯齿_opencv不规则轮廓抠图_22


(1)图像修补函数:inpaint() 函数

opencv不规则轮廓抠图 opencv 轮廓 锯齿_二维_23

 

opencv不规则轮廓抠图 opencv 轮廓 锯齿_opencv不规则轮廓抠图_24