轮廓提取drawContours的使用详解和对任意轮廓ROI环形区域的方法

image - 目标图像

contours - 所有的输入轮廓,每个轮廓为点矢量(a point vector)/点向量 形式,与findcontours中的返回值 contours 的列表list形式一致(具体详见代码)

contourIdx - 指定轮廓列表的索引 ID(将被绘制),若为负数,则所有的轮廓将会被绘制。

color - 绘制轮廓的颜色。

thickness - 绘制轮廓线条的宽度,若为负值或CV.FILLED则将填充轮廓内部区域【重点参数,填充使用】

lineType - Line connectivity,(有的翻译线型,有的翻译线的连通性)

hierarchy - 层次结构信息,与函数findcontours()的hierarchy有关

maxLevel - 绘制轮廓的最高级别。若为0,则绘制指定轮廓;若为1,则绘制该轮廓和所有嵌套轮廓(nested contours);若为2,则绘制该轮廓、嵌套轮廓(nested contours)/子轮廓和嵌套-嵌套轮廓(all the nested-to-nested contours)/孙轮廓,等等。该参数只有在层级结构时才用到。

offset - 按照偏移量移动所有的轮廓(点坐标)。

例如一个碗碟的轮廓已知,(可以用YOLO或者图像分割等方式得到目标轮廓),使用thickness参数就可以得到一个和边缘轮廓相似的环形区域。具体步骤如下:

(1)thickness线宽设置为目标roi宽度的2倍,例如,我想获得一个椭圆盘的环形区域宽度为20,则thickness=40,保存为图一

(2)thickness线宽设置为-1.使轮廓内部区域全部被填充,保存为图二。

(3)图一和图二相乘,取重叠部分即可得到目标环形区域

效果如图

     轮廓提取drawContours的使用详解和对任意轮廓ROI环形区域的方法_第1张图片                            轮廓提取drawContours的使用详解和对任意轮廓ROI环形区域的方法_第2张图片

你可能感兴趣的:(图像算法)