什么是图像轮廓?

图像轮廓是具有相同颜色或强度的连续点的曲线。
轮廓的作用:
1、用于图形分析
2、物体的识别与检测
注意点:
1、为了检测的准确性,需要先对图像进行二值化或Canny操作
2、画轮廓时会修改输入的图像
轮廓查找api:findContours(img,mode,ApproximationMode)
两个返回值,contours和hierarchy
mode的值:
1、RETR_EXTERNAL=0,表示只检测外轮廓
2、RETR_LIST=1,检测的轮廓不建立等级关系
3、RETR_CCOMP=2,每层最多两级
4、RETR_TREE=3,按树形存储轮廓
ApproximationMode的值:
1、CHAIN_APPROX_NONE,保存所有轮廓上的点
2、CHAIN_APPROX_SIMPLE,只保存角点

如何绘制轮廓

绘制轮廓api:drawContours(img,contours,contourIdx,color,thickness,...)
img:需要绘制的图片
contours:这些轮廓的坐标点
contourIdx:所有的轮廓是有顺序的,可以设置顺序号将我们想要的展示的轮廓展示出来,-1表示绘制所有轮廓
color:轮廓的颜色
thickness:线宽,-1是全部填充

轮廓的面积与周长

计算轮廓面积与周长在日常生活中是经常遇到的,比如查找的轮廓有部分小轮廓不是我们想要的,这时我们就可以通过轮廓面积去过滤掉小的轮廓。
轮廓面积的api:contourArea(contour)
轮廓周长的api:arcLength(curve,closed)
curve:一个轮廓
closed:轮廓是否闭合,闭合设置为True,不闭合设置为False

多边形逼近与凸包

什么是多边形逼近?什么是凸包呢?它们之间有什么联系呢?下图中左边效果是多边形逼近,右边的效果是凸包。对于不规则的图像,我们查找轮廓的时候如果把它画出来,那么它是严格按照轮廓来画的,这样就导致数量非常大,有些情况下我们只需要存一些特征点即可,这就是多边形逼近的作用,减少了数据存储量,同时保存轮廓的特征点。
凸包就是把轮廓描述出来,而且是凸出的,不会往下凹。
多边形逼近api:approxPolyDP(curve,epsilon,closed)
curve:曲线
epsilon:精度
closed:是否闭合
凸包api:convexHull(points,clockwise,...)
closed:轮廓
clockwise:顺时针还是逆时针

外接矩形

Opnecv外接矩形包括2种类型:最小外接矩形和最大外接矩形。下图中红色矩形是白色图像的最小外接矩形,绿色矩形是白色图像的最大外接矩阵。

最小外接矩形api:minAreaRect(points)
points:轮廓点
最小外接矩形的返回值是RotatedRect,RotatedRect共包含3个重要组成部分:
评论
头像
验证码:
相关推荐

blender骨骼导入到threejs方法

threejs制作动态旋转银河系

threejs制作鼠标交互的网页banner




如果未经特殊说明,本站内容皆为原创,转载内容如果侵犯了您的权益,如有侵权请联系管理员删除
联系QQ:2380712278

备案号:皖ICP备19012824号