//****************************************************************

转载于http://www.cnblogs.com/chenjianxiang/p/4225782.html

****************************************************************//

OpenCV里支持很多边缘提取的办法,可是如何在一幅图像里得到轮廓区域的参数呢,这就需要用到findContours函数,这个函数在OpenCV4Android的原型为:

void org.opencv.imgproc.Imgproc.findContours(Mat image, List<MatOfPoint> contours, Mat hierarchy, int mode, int method)

image参数为已经二值化的原图

contours参数为检测的轮廓数组,每一个轮廓用一个MatOfPoint类型的List表示

hiararchy参数和轮廓个数相同,每个轮廓contours[i]对应4个hierarchy元素hierarchy[i][0] ~hierarchy[i][3],分别表示后一个轮廓、前一个轮廓、父轮廓、内嵌轮廓的索引编号,如果没有对应项,该值设置为负数。

mode表示轮廓的检索模式例如:
 

CV_RETR_EXTERNAL表示只检测外轮廓
 
CV_RETR_LIST检测的轮廓不建立等级关系
 
CV_RETR_CCOMP建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层。
 
CV_RETR_TREE建立一个等级树结构的轮廓。
 

method为轮廓的近似办法

CV_CHAIN_APPROX_NONE存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1   
CV_CHAIN_APPROX_SIMPLE压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息   
CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS使用teh-Chinl chain 近似算法

findContours经常与drawContours配合使用,用来将轮廓绘制出来。还可以得到轮廓的外包络矩形,使用函数boundingRect,如果想得到旋转的外包络矩形,使用函数minAreaRect,返回值为RotatedRect;
也可以得到轮廓的外包络圆,对应的函数为minEnclosingCircle;想得到轮廓的外包络椭圆,对应的函数为fitEllipse,返回值也是RotatedRect;可以用ellipse函数画出对应的椭圆。

Imgproc.findContours函数相关推荐

  1. findcontours函数_opencv轮廓findContoursamp;drawContours

    本文目的 目的:学习使用opencv的findContours和drawContours函数 语言:java 版本:opencv-410 简介:通过findContours函数检测物体轮廓,并且用dr ...

  2. OpenCV findContours函数参数

    目录 OpenCV findContours函数参数 python检测外轮廓: c++轮廓检测: 一.mode取值"CV_RETR_EXTERNAL",method取值" ...

  3. findContours函数

    1.findContours函数 函数的作用: 查找图像的轮廓 2.findContours函数,这个函数的原型为: void findContours(InputOutputArray image, ...

  4. 【图像处理】——Python+opencv实现二值图像的轮廓边界跟踪以及轮廓面积周长的求解(findcontours函数和contourArea函数)

    目录 一.函数 cv.findContours 二.轮廓层级(返回参数hierarchy) 三.轮廓寻找方式 1. RETR_LIST 2. RETR_TREE 3. RETR_EXTERNAL 4. ...

  5. opencv cv.findContours 函数详解

    函数 cv.findContours contours, hierarchy = cv.findContours( image, mode, method[, contours[, hierarchy ...

  6. findContours函数报错:“将一个无效参数传递给了将无效参数视为严重错误的函数”解决方案之一

    在使用findContours函数时,release可以通过,debug一直在报错:"将一个无效参数传递给了将无效参数视为严重错误的函数". 这里有个大牛汇集的好多种解决方法: h ...

  7. python-opencv2利用cv2.findContours()函数来查找检测物体的轮廓

    轮廓检测 轮廓检测也是图像处理中经常用到的.OpenCV-Python接口中使用cv2.findContours()函数来查找检测物体的轮廓. 实现 使用方式如下: import cv2   img ...

  8. findContours()函数存储在contours中的数据形式

    findcontou()函数的运用一般都与vector<vector<Point>>Contours;和vector<Vec4i> Hierarchy这两个函数一起 ...

  9. findContours函数详细解析

    1: image, cnts, hierarchy = cv2.findContours(a,b,c)//寻找图形中的轮廓 传入的参数:a:传入的图像(二值化图像)b:轮廓的检索模式,一般是检测外轮廓 ...

最新文章

  1. Numba——python面向数组高性能计算库
  2. 飞行熊猫游戏源码android版
  3. python白名单验证-Python中XSS白名单过滤的实现
  4. 【C 语言】字符串模型 ( 字符串翻转模型 )
  5. Hadoop SequnceFile.Writer 压缩模式及压缩库浅析
  6. 系统设计4:Web服务和流量限制
  7. 刷新DNS解析缓存+追踪+域名解析命令
  8. C++ MFC string转Cstring为什么会乱码
  9. python独立图形_在networkx中查找图形对象中的独立图形
  10. 互联网公司面试必问的mysql题目
  11. java lock unlock_【Java并发007】原理层面:ReentrantLock中lock()、unlock()全解析
  12. Akka的Actor层级结构《seven》译
  13. TypeScript笔记(4)—— TypeScript中的类型注解
  14. spring核心知识点分析
  15. APP推广运营经验总结
  16. 计算机九针孔什么接口,db9接口-USBCAN-I设备的DB9针串口头中的针脚是如何定义的-电气资讯 - 电工屋...
  17. html tooltips效果,CSS3+jQuery轻松实现工具提示(Tooltips)
  18. 计算机论文指导记录范本,论文指导内容记录怎么写 3篇 论文指导记录20篇
  19. Tez的web UI简单体验
  20. 用什么软件测试mate9的闪存_荣耀v9怎么看闪存类型 荣耀v9怎么测试闪存

热门文章

  1. winrar 去广告_解压缩工具之WinRAR下载安装教程
  2. Bzoj 3226: [Sdoi2008]校门外的区间
  3. 【Openstack】【Nova】开发者入门,开发工作流
  4. python元组和列表都支持的方法是_Python进阶1-元组和列表
  5. autojs toast 可以改变字体颜色吗_你手中的渠道货够硬吗?看完这期 OFF WHITE x AIR JORDAN 5 对比,你就知道了!...
  6. python 三分类的哑编码_python数据挖掘实战 -数据预处理篇(数据可视化-空值填充-哑变量编码)...
  7. python行与缩进_Python行结构与缩进的简单介绍
  8. java环境变量_Java的下载及环境变量的配置
  9. sql alwayson群集 registerallprovidersip改为0_前沿观察 | 分布式SQL性能对比
  10. UE4 移动平台游戏开发