OpenCV轮廓查找,绘制以及凸包检测

前面讲到了一些形态学的变换,是为了帮助我们处理掉一些我们不想要的,对实验结果可能产生误解的选项。
这里讲下关于OpenCV 的边缘检测相关的方法,和参数的讲解:
这里用到的方法有: findContours , drawContours , convexHull,contourArea,arcLength,approxPolyDP

findContours (查找轮廓)参数讲解:
def findContours(image, mode, method, contours=None, hierarchy=None, offset=None)
image这里就不谈了
mode:Int类型的,轮廓检索模式,有如下参数选择:
RETR_EXTERNAL:表示只检测最外层轮廓
RETR_LIST:提取所有轮廓,并放置在list中,检测的轮廓不建立等级关系
RETR_CCOMP:提取所有轮廓,并将轮廓组织成双层结构(two-level hierarchy),顶层为连通域的外围边界,次层位内层边界
RETR_TREE:提取所有轮廓并重新建立网状轮廓结构
RETR_FLOODFILL:官网没有介绍,应该是洪水填充法

method:Int类型的,轮廓近似法,有如下参数选择:
CHAIN_APPROX_NONE:获取每个轮廓的每个像素,相邻的两个点的像素位置差不超过1
CHAIN_APPROX_SIMPLE:压缩水平方向,垂直方向,对角线方向的元素,值保留该方向的重点坐标,如果一个矩形轮廓只需4个点来保存轮廓信息
CHAIN_APPROX_TC89_L1CHAIN_APPROX_TC89_KCOS使用Teh-Chinl链逼近算法中的一种

contours:检测到的轮廓,每个轮廓都是以点向量(Point)的形式进行存储的

hierarchy:可选的输出向量(std::vector),包含了图像的拓扑信息,作为轮廓数量的表示hierarchy包含了很多元素,每个轮廓contours[i]对应hierarchy中hierarchy[i][0]~hierarchy[i][3],分别表示后一个轮廓,前一个轮廓,父轮廓,内嵌轮廓的索引,如果没有对应项,则相应的hierarchy[i]设置为负数。

offset:轮廓点可选偏移量

drawContours (绘制轮廓)参数讲解:
def drawContours
(image,contours,contourIdx,color,thickness=None,lineType=None,hierarchy=None,maxLevel=None,offset=None)

contours:通过findContours找到的轮廓列表或者数组
contourIdx:int类型的,绘制轮廓的指示变量(索引),如果为负值,则绘制所有轮廓
color:绘制轮廓的颜色
thickness:int类型的,绘制轮廓的线条粗细,如果为负值,则再轮廓内绘制
lineType:int类型的,线条类型:默认LINE_8,有以下几种可选:
FILLED
LINE_4 4向相连
LINE_8 8向相连
LINE_AA 逆向连线
hirarchy:可选层次结构信息
maxLevel:int类型的,用于绘制轮廓的最大等级
offset:Point类型的,课选轮廓偏移参数,用制定偏移量offset = (dx,dy)给出绘制轮廓的偏移量

convexHull(凸包检测)参数讲解:
def convexHull(points, hull=None, clockwise=None, returnPoints=None)
point:凸包的点集
hull:输出的凸包点
clockwise:Bool类型的,表示凸包的点是顺时针方向还是逆时针方向
True -> 顺时针
Flase -> 逆时针
returnPoints:默认为True。它会返回凸包上的点的坐标,如果为Flase,就会返回与凸包点对应的轮廓上的点

contourArea:(轮廓面积)
def contourArea(contour, oriented=None)
contour:输入的点集,一般是图像的轮廓点
oriented: 表示某一个方向上的面积值,顺时针或者逆时针,一般默认为false

arcLength:(轮廓周长)
def arcLength(curve, closed)
curve:输入的轮廓
closed:Bool类型的,是否闭合。True 闭合,Flase 线段

approxPolyDP(轮廓近似)
def approxPolyDP(curve, epsilon, closed, approxCurve=None)
curve:轮廓点集
epsilon:输出的精度,轮廓点之间的最大距离
close:Bool类型的,图像是否闭合
approxCurve:输出的点集,当前点集是能最小包容指定点集的

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值