OpenCV - findContours函数使用

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() 表示代表轮廓点的偏移量
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空空的司马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值