首页 > 学院 > 开发设计 > 正文

Opencv中findContours函数改变输入图像问题

2019-11-06 07:20:59
字体:
来源:转载
供稿:网友

原来在使用Opencv的findContours的时候一直没有注意到,这个函数会改变输入的图像。Opencv的官网上的说明文档里面也指出了这一点 findContours

当我们要去找一张二值图里面的轮廓的时候,如果没有注意到这一点,很可能我们的二值图在找到轮廓之后就变掉了。一般的解决方法是利用clone()复制出另外一张图输入findContours函数里面,这样可以保证原图不被改变。对比结果如下,其中mask表示输入的二值图像:

采用findContours(mask.clone(), contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE)之后mask如下所示: findContours

采用findContours(mask, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE)之后mask如下所示: findContours

从上面的例子可以看出,findContours在寻找轮廓的时候会做提取边缘的处理,为了保证输入的源图像在findContours之后保持不变,最好还是加上clone()。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表