opencv的contour轮廓排序
来源:互联网 发布:淘宝上怎么设置折扣 编辑:程序博客网 时间:2024/06/05 05:54
原文地址:http://blog.csdn.net/weif6565/article/details/41078201
1 找轮廓findContours
findContours有两个接口,区别在于需不需要输出hierarchy层次结构(可用于分析轮廓间关系,一般比较少用到)。
直接找最外层轮廓RETR_EXTERNAL,结果输出全部轮廓点CHAIN_APPROX_NONE
- vector<vector<Point>> contours;
- findContours(edges_D,contours,RETR_EXTERNAL,CHAIN_APPROX_NONE);
2 轮廓大小排序
找完轮廓后,绝大部分需求就是再获取最大轮廓,简单的可以按照轮廓周长或轮廓面积来排序。
排序函数直接用std库:
- std::sort(contours.begin(),contours.end(),ContoursSortFun);
需要另外声明排序规则函数ContoursSortFun
按轮廓周长(轮廓点数量)排序:
- static inline bool ContoursSortFun(vector<cv::Point> contour1,vector<cv::Point> contour2)
- {
- return (contour1.size() > contour2.size());
- }
按轮廓面积排序:
- static inline bool ContoursSortFun(vector<cv::Point> contour1,vector<cv::Point> contour2)
- {
- return (cv::contourArea(contour1) > cv::contourArea(contour2));
- }
排完续后,contours中第一个元素contours[0]即是最大轮廓.
3 绘制最大轮廓
- Mat Img(edges_D.size(),CV_8UC3,Scalar(0));
- drawContours(Img,contours,0,Scalar(255,0,0),-1);
drawContours中第3个参数为0说明绘制第一个轮廓;最后一个参数-1代表绘制时填充轮廓,若大于0则指轮廓厚度。
1 0
- opencv的contour轮廓排序
- opencv:轮廓contour
- OpenCV(C++版)轮廓(contour)检测
- contour 轮廓
- opencv 查找轮廓,cvFindContours返回值,contour->total和循环得到的轮廓数为什么不同?分别表示神马意思?
- opencv学习-imgprocess-轮廓提取和标记 contour
- (contour)轮廓检测
- 轮廓(contour)检测
- 轮廓(contour)检测2
- 基于轮廓线索(Contour Cues)的实时行人检测
- 基于轮廓线索(Contour Cues)的实时行人检测
- 基于轮廓线索(Contour Cues)的实时行人检测
- opencv按轮廓面积排序
- OpenCV图像的轮廓
- opencv 截取轮廓中的图像——实现PS中的抠图功能 Opencv extract area circled by contour
- opencv 截取轮廓中的图像——实现PS中的抠图功能 Opencv extract area circled by contour
- Opencv ,contour moments
- opencv 获取手势的轮廓
- hdu 5839 Special Tetrahedron (判断四面体)
- 大数素性测试+大数质因数分解(miller-rabin,Pollard_rho算法)
- 验证签名机制——java示例
- 数字生成游戏_纪中2570_bfs
- java的命名规范
- opencv的contour轮廓排序
- ThinkPHP 遇到问题:无法加载数据库驱动: Think\Db\Driver\
- 快速幂(模板)
- java基础——关于异步任务串行执行的思考与实现
- 线段树总结!
- 这是个巧妙的表达式: a ˆ= b ˆ= a ˆ= b 它不需要临时变量就可 以交换 a 和 b 的值。
- AttributeSet 自定义控件的一般步骤
- malloc了多个结构体长度的内存后,怎样操作每个结构体
- CTF入门指南1(Capture the flag)