zoukankan      html  css  js  c++  java
  • opencv3 8.1 查找并绘制轮廓

    8.1.1

    寻找轮廓 findContours

    在二值图像中寻找轮廓

    • 参数1 Mat 源图像 应该是二值图像,可以用threshold,compare,inrange,adaptivethreshold,canny等将灰度图,彩色图转换成二值图,此函数会在寻找轮廓的同时修改图象的内容。

    • 参数2 outputarrayofarrays contours 检测到的轮廓,调用函数之后的运算结果储存在这里,用point类型的vector表示。

    • 参数3 outputarray hierarchy 可选的输出向量,包含图像的拓扑信息,作为轮廓数量的表示,包含了许多元素,每个轮廓contours[i]对应4个hierarchy元素 ([i][0]~[i][3]),分别表示后一个轮廓、前一个轮廓、父轮廓、内嵌轮廓的索引编号,如果没有对应项,对应的hierarchy[i]值设置成负值。

    • 参数4 int mode
      RETR_EXTERNAL 表示只检测最外层轮廓[i][2] [i][3]=-1;
      RETR_LIST 提取所有轮廓并且放在list中。轮廓不建立等级关系
      RETR_CCOMP 提取所有轮廓,并且将其组织成双层结构(顶层为连通域的外围边界,次层为孔的内层边界);
      RETR_TREE 提取所有轮廓,并重新建立网状的轮廓结构

    • 参数5 int method
      CHAIN_APPROX_NONE 获取每个轮廓的每个像素,相邻的两个点的像素位置差不超过1
      CHAIN_APPROX_SIMPLE 压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形只需4个点
      CHAIN_APPROX_TC89_L1,CHAIN_APPROX_TC89_KCOS 使用Teh_Chinl链逼近算法中的一个。

    • 参数6 Point offset 每个轮廓点可选的偏移量,有默认值Point()对ROI图像中找出的轮廓,并要在整个图像中进行分析时,这个参数有用。

    绘制轮廓 drawContours()函数

    • 参数1 Mat 原图像
    • 参数2 contours point的vector类型
    • 参数3 int contourIdx轮廓绘制的指示变量,如果是负值绘制所有轮廓
    • 参数4 const Scalar& color表示颜色
    • 参数5 thickness 轮廓线条的粗细度,默认1 如果是负值
      绘制在轮廓内部。
    • 参数6 int lineType 线条类型 默认8 有8(8联通) 、4 (4联通)、LINE_AA(抗锯齿线型)
    • 参数7 InputArray hierarchy 可选层次结构,默认noArray()
    • 参数8 int maxLevel 表示用于绘制轮廓的最大等级,默认INT_MAX
    • 参数9 Point 类型的offset,可选的轮廓偏移量
      用指定的偏移量offset=(dx,dy)偏移需要绘制的轮廓,有默认值Point().
  • 相关阅读:
    Linux下crontab详解
    Linux下mail/mailx命令发送邮件
    Linux下Mysql数据库备份
    Linux远程备份—ftp方式、NFS方式
    Fedora 17安装NFS
    Linux下vsftp服务器—上传、下载
    Linux中Kill进程的N种方法
    Linux命令执行顺序— ||和&&和;
    C#中override和overload的区别
    C#中派生类调用基类构造函数用法分析
  • 原文地址:https://www.cnblogs.com/koukouStar/p/14534997.html
Copyright © 2011-2022 走看看