findcontours函数_opencv轮廓findContoursamp;drawContours
本文目的
目的:学习使用opencv的findContours和drawContours函数
语言:java
版本:opencv-410
简介:通过findContours函数检测物体轮廓,并且用drawContours画出来
程序支持效果:
加载图片后可以在界面上更改三个参数进行效果对比查看
- 1.修改边缘检测阈值,改变边缘检测效果
- 2.修改轮廓检索模式
- 3.修改轮廓的近似模式
分解介绍
函数:findContours
findContours
参数介绍
- 第一个参数:image:单通道图像矩阵,可以是灰度图,但更常用的是二值图像,一般是经过Canny、拉普拉斯等边缘检测算子处理过的二值图像;
- 第二个参数:contours,定义为“vector> contours”,是一个向量,并且是一个双重向量,向量内每个元素保存了一组由连续的Point点构成的点的集合的向量,每一组Point点集就是一个轮廓。有多少轮廓,向量contours就有多少元素。
- 第三个参数:存储了检出的轮廓层级结构,具体学习参考别人的文档:https://blog.csdn.net/qq_33810188/article/details/81285867?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
- 第四个参数:int型的mode,定义轮廓的检索模式:
- RETR_EXTERNAL:只检测最外围轮廓,包含在外围轮廓内的内围轮廓被忽略
- RETR_LIST :检测所有的轮廓,包括内围、外围轮廓,但是检测到的轮廓不建立等级关系,彼此之间独立,没有等级关系,这就意味着这个检索模式下不存在父轮廓或内嵌轮廓
- RETR_CCOMP: 检测所有的轮廓,但所有轮廓只建立两个等级关系,外围为顶层,若外围内的内围轮廓还包含了其他的轮廓信息,则内围内的所有轮廓均归属于顶层
- RETR_TREE:检测所有轮廓,所有轮廓建立一个等级树结构。外层轮廓包含内层轮廓,内层轮廓还可以继续包含内嵌轮廓。
- 第五个参数:int型的method,定义轮廓的近似方法:
- CHAIN_APPROX_NONE:保存物体边界上所有连续的轮廓点到contours向量内
- CHAIN_APPROX_SIMPLE:仅保存轮廓的拐点信息,把所有轮廓拐点处的点保存入contours向量内,拐点与拐点之间直线段上的信息点不予保留
- CHAIN_APPROX_TC89_L1,CHAIN_APPROX_TC89_KCOS使用teh-Chinl chain 近似算法
- 第六个参数:Point偏移量,所有的轮廓信息相对于原始图像对应点的偏移量,相当于在每一个检测出的轮廓点上加上该偏移量,并且Point还可以是负值!
函数:drawContours
drawContours
参数介绍
- 第一个参数image表示目标图像,
- 第二个参数contours表示输入的轮廓组,每一组轮廓由点vector构成,
- 第三个参数contourIdx指明画第几个轮廓,如果该参数为负值,则画全部轮廓,
- 第四个参数color为轮廓的颜色,
- 第五个参数thickness为轮廓的线宽,如果为负值或CV_FILLED表示填充轮廓内部,
- 第六个参数lineType为线型,
- 第七个参数为轮廓结构信息,
- 第八个参数为maxLevel
- 第九个参数为偏移量
程序步骤
以下是程序的核心步骤:
- 加载本地图片
String
- 灰度变换
//灰度变换
- 滤波处理
//滤波处理
- 边缘检测
Mat
- 轮廓检测
Imgproc
- 轮廓检测结果的绘画
Mat
代码
package
效果
效果1
轮廓检索模式为RETR_EXTERNEL,只检测最外围轮廓,包含在外围轮廓内的内围轮廓被忽略
效果2
轮廓检索模式为RETR_TREE,检索出所有的轮廓
其他效果操作程序可以看到有所不同
findcontours函数_opencv轮廓findContoursamp;drawContours相关推荐
- OpenCV findContours函数参数
目录 OpenCV findContours函数参数 python检测外轮廓: c++轮廓检测: 一.mode取值"CV_RETR_EXTERNAL",method取值" ...
- 【图像处理】——Python+opencv实现二值图像的轮廓边界跟踪以及轮廓面积周长的求解(findcontours函数和contourArea函数)
目录 一.函数 cv.findContours 二.轮廓层级(返回参数hierarchy) 三.轮廓寻找方式 1. RETR_LIST 2. RETR_TREE 3. RETR_EXTERNAL 4. ...
- python-opencv2利用cv2.findContours()函数来查找检测物体的轮廓
轮廓检测 轮廓检测也是图像处理中经常用到的.OpenCV-Python接口中使用cv2.findContours()函数来查找检测物体的轮廓. 实现 使用方式如下: import cv2 img ...
- findContours函数
1.findContours函数 函数的作用: 查找图像的轮廓 2.findContours函数,这个函数的原型为: void findContours(InputOutputArray image, ...
- python opencv轮廓检测_OpenCV 轮廓检测的实现方法
轮廓概述 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度.轮廓在形状分析和物体的检测和识别中很有用. 为了更加准确,要使用二值化图像.在寻找轮廓之前,要进行阈值化处理或 ...
- Imgproc.findContours函数
//**************************************************************** 转载于http://www.cnblogs.com/chenjia ...
- opencv cv.findContours 函数详解
函数 cv.findContours contours, hierarchy = cv.findContours( image, mode, method[, contours[, hierarchy ...
- findContours函数详细解析
1: image, cnts, hierarchy = cv2.findContours(a,b,c)//寻找图形中的轮廓 传入的参数:a:传入的图像(二值化图像)b:轮廓的检索模式,一般是检测外轮廓 ...
- findContours函数报错:“将一个无效参数传递给了将无效参数视为严重错误的函数”解决方案之一
在使用findContours函数时,release可以通过,debug一直在报错:"将一个无效参数传递给了将无效参数视为严重错误的函数". 这里有个大牛汇集的好多种解决方法: h ...
最新文章
- bzoj 4711 小奇挖矿 ——“承诺”类树形dp
- 5.6 SMO-机器学习笔记-斯坦福吴恩达教授
- TF之DCGAN:基于TF利用DCGAN测试自己的数据集并进行生成过程全记录
- Atlas学习手记(9):异步调用Page Method
- 程序以html形式发送邮件注意问题
- 如何注释ascx中的代码
- MYSQL查询近一年 近一月 近一周 今天数据 没有数据返回0 按时间有序返回数据
- Java提高性能的50个优化,记得收藏
- HDFS 纠删码 EC
- iOS 实现时间线列表效果
- 凹多边形三角剖分算法实现---基于Unity3D
- Android连接USB打印机
- 3dB带宽的简要解释
- antd-select拼音首字母模糊查询
- 听课笔记-名校启程大学规划课
- 程序员的爱情 第十七章
- Python图像锐化及边缘检测(Roberts、Prewitt、Sobel、Lapllacian、Canny、LOG)
- 通过ELO机制衡量各类对弈活动水平
- 原生js完成拼图小游戏
- Android 上手机跟机顶盒应用开发的区别