Opencv2简洁代码提取连通区域
2016-03-22 18:55
459 查看
在用opencv2进行开发的时候,发现没有好用提取CCL的API,用contour呢效果还是有些区别。博主这里介绍一种只需要些许代码就能完成这项工作的方法,性能要差些。
假设已经是二值,如果是灰度,而且想两个像素差一点也算连通的话可以改CCLFunctor
假设已经是二值,如果是灰度,而且想两个像素差一点也算连通的话可以改CCLFunctor
class CCLFunctor { public: bool operator()(const Point& i, const Point& j) { if (abs(i.x - j.x) <= 1 && abs(i.y - j.y) <= 1) return true; else return false; } };
void ExtractCCL( const Mat& binaryImg,vector<vector<Point>>& ccls) { ccls.clear(); vector<Point> pts; for (int r = 0; r < binaryImg.rows; ++r) { uchar* ptr = binaryImg.ptr<uchar>(r); for (int c = 0;c < binaryImg.cols; ++c) { if(*(ptr+c) == 255) pts.push_back(Point(c, r)); } } vector<int> labels; int n = partition(pts, labels, CCLFunctor()); ccls.resize(n); for(size_t i = 0;i < pts.size();++i) { ccls[labels[i]].push_back(pts[i]); } }
相关文章推荐
- java中相对路径加载xml
- Java文件分割
- Jeecg-P3 1.0版本发布,JAVA插件开发框架
- Spring发送邮件案例
- 树形动规--没有上司的舞会--C++
- Java并发编程:性能、扩展性和响应
- Python笔记3
- MATLAB 2014a 在Mac os x yosemite 10.10 Retina显示模糊的解决的方法
- Python笔记2
- maven学习笔记 maven的使用
- 【实例】ajax提交到java后台之后处理数据
- Python笔记1
- python处理文件效率对比awk
- kruskal --- c++ (2)
- JDK中的URLConnection参数详解
- Myeclipse添加mybatis generator插件的手动安装插件的方法
- RSA 解密的时候报错 而且有乱码:java.lang.ArrayIndexOutOfBoundsException: too much data for RSA block
- java中路径的获取
- ffmpeg从rtsp抓流存flv[c# NReco.VideoConverter flv]
- eclipse使用技巧 之 一行代码写出最好的单例模式