opencv轮廓检测之 drawContours 函数 使用样例
来源:互联网 发布:艾瑞数据报告 编辑:程序博客网 时间:2024/05/16 07:18
最近在写车牌检测的程序, 想法是想把车牌框的边缘提取出来
但是经过二值化后的edge, 并不是完整的连接, 不少的地方有断点, 还有无关的边缘
先不考虑形态学, 看看是否能够较好的提取处来
首先先上关于findContours的内容 http://blog.csdn.net/traumland/article/details/51093262
即使不看算法只看看这两张图, findContours 中的 hierarchy 结构想必也能了解了
opencv官方文档中给了一个样例, 就是利用drawContours 把 connected - components 都提取出来
cv::findContours(img,outerline,hierarchy,CV_RETR_TREE,CV_CHAIN_APPROX_NONE);
int idx = 0;
for( ; idx >= 0; idx = hierarchy[idx][0] ){
cv::Scalar color( rand()&255, rand()&255, rand()&255 );
cv::drawContours( imgEmpty, outerline, idx, color, CV_FILLED, 8, hierarchy );
}
原图 效果图 , 其中灰度图用了canny处理
改动cv::findContours(img,outerline,hierarchy,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
关于CV_RETR_EXTERNAL,CV_RETR_TREE,CV_RETR_LIST,CV_RETR_CCOMP
请看 http://blog.csdn.net/traumland/article/details/51093262
个人认为
我们并不明确一个车牌需要多少条轮廓来构成, 而这些外部轮廓是同级的
所以想通过drawContours直接画出边界是不可能的,
需要其他方法, 比如形态学.图像边缘是细化过的,所以只能先膨胀后腐蚀,也就是闭操作,
且膨胀不能使车牌边框触到图像边界.
然后再进行开操作,去除某些细枝.
如图, 是7*1 的闭操作这个结构元素的大小对于我来说不太好确定, 有必要将图像放置在一个较大尺寸的空白区域内.
那么, 如何将某图像img放到某图像src的指定位置呢?
cv::Mat imgroi(src,rect);
img.copyTo(imgroi);
其中rect为cv::Rect, 需要一个左上角的顶点cv::Point(x,y), 一个width 一个height
我用20*20的先闭后开操作得到的结果如下, 白色与原边框几乎完全相等
除了形态学还有什么方法?
填充法(种子区域生长法,floodfill等)
- opencv轮廓检测之 drawContours 函数 使用样例
- OpenCV drawContours 内轮廓
- opencv寻找轮廓2--drawContours
- [OpenCV]绘制填充轮廓drawContours
- OpenCV之轮廓检测
- OpenCV基础优化之使用drawContours
- opencv中轮廓检测函数
- Opencv drawContours函数
- findContours轮廓提取函数与drawContours轮廓绘制函数的使用
- OpenCV——绘制填充轮廓drawContours
- OPENCV轮廓提取findContours和drawContours
- OPENCV轮廓提取findContours和drawContours
- OPENCV轮廓提取findContours和drawContours
- OpenCV中的drawContours使用
- OpenCV编程案例:使用轮廓函数检测连通区域
- 使用OpenCV中cvFindContour函数检测轮廓的心得
- 提取图像轮廓--findContours函数、drawContours函数
- opencv轮廓检测之椭圆检测
- mysql查询优化技巧
- 第七讲
- Linux线程同步的三种方法
- 怎样去掉“交互式服务对话框检测”提示对话框
- 第八讲
- opencv轮廓检测之 drawContours 函数 使用样例
- shell调用sftp实现自动批量上传or下载
- 了解ASP.NET MVC几种ActionResult的本质:FileResult
- 让你不再害怕指针【个人总结】
- 搜索引擎关键字智能提示的一种实现
- 第九讲
- 开发 PostgreSQL 的 Cast 函数进行类型转换, 使用 CREATE CAST
- javaSwing 设置每个组件之间的间距
- 第十讲