OpenCV - findContours函数使用
2015-12-01 17:21
225 查看
1、findContours
findContours在OpenCV的参考手册(opencv2refman.pdf)中的原型如下:findContours有两个函数的原型,第一个输出带层次的contours,换句话说每一个contours都在一个单独的图像层上,这就给我们需要单独处理每一个contours带来了方便。不带层次的coutours也有自己的用处,也就是我们在不需要输出层次的contours的时候使用第二个重载的版本就好了。
参数解释:
InputOutputArray image, 这个参数不用过多解释,表示我们需要寻找contours的源图像,带入Mat型数据即可;
需要说明的是:
1、这里带入的图像必须是8bit单通道的图像;
2、这里的图像必须是二值的,当然也可以带入灰度图像,但是这时候这个函数就将图像中的像素为0的点作为0,像素不为0的点作为1。
特别提醒:
1、这个函数在提取轮廓的时候会改变源图像
2、当参数mode是CV_RETR_CCOMP 或者CV_RETR_FLOODFILL的时候输入的图像就可以是32bit的了。(CV_32SC1)
OutputArrayOfArrays contours, 注意这个地方的参数,这里的一般都会填入一个vector< vector<Point> >,也就是点集合
OutputArray hierarchy,这个参数填入的是图像的层次集合,这个是可选项,不填这个则不分层表示。填入这种数据类型std::vector<cv::Vec4i>;
int mode, 有以下几种模式:
1、CV_RETR_EXTERNAL 只检索图像的外边界
2、CV_RETR_LIST 检索所有contours但是不建立层次关系
3、CV_RETR_CCOMP 建立两个层次的轮廓,上面的一层为外面的边界,里面的一层为外边界内的边界
4、CV_RETR_TREE 建立等级树结构的轮廓
int method,
1、CV_CHAIN_APPROX_NONE 存储所有的轮廓点,相邻的两个像素的位置差不超过1个像素
2、CV_CHAIN_APPROX_SIMPLE 压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息
3、CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS 使用teh-Chinl chain 近似算法
Point offset=Point() 表示代表轮廓点的偏移量
相关文章推荐
- 每天一个linux命令(15):tail 命令
- 每天一个linux命令(14):head 命令
- Docker 2 -- 关于Dockerfile
- linux如何关闭防火墙
- kali攻防第7章 SQLMAP介绍之PHP网站渗透
- Linux内核的引导
- Centos安装ipvsadm错误解决
- Calico在Docker中的搭建
- tomcat启动多实例
- Linux在线用户通信
- openFire只吃不出的问题
- Linux在线用户通信
- Linux vi 命令
- Nginx入门教程
- Linux shell命令
- tomcat7点击\bin\tomcat7.exe一闪而过,点击tomcat7w.exe提示未安装服务
- 使用awstats监控Tomcat日志
- Linux Shell 命令学习一
- Hadoop分布式安装整理
- Hadoop分布式安装整理