emgucv——findContours
2016-04-17 09:22
465 查看
首先需要得到边缘的图像,FindContours是对边缘图像进行处理,边缘图像可以用数据点
有两种方法可以显示提取的轮廓
自带的drawContours
VectorOfVectorOfPoint中存放的数据点
原图和显示的图像如下:
Image<Gray, Byte> currentImage = new Image<Gray, byte>(@"F:\MyDesktop\1.jpg"); Image<Gray, Byte> res = new Image<Gray, byte>(currentImage.Width, currentImage.Height, new Gray(0)); VectorOfVectorOfPoint vvp = new VectorOfVectorOfPoint(); Image<Bgr, Byte> disp = new Image<Bgr, byte>(currentImage.Width, currentImage.Height); Image<Bgr, Byte> edges = new Image<Bgr, byte>(currentImage.Width, currentImage.Height); Mat b1 = new Mat(); CvInvoke.Canny(currentImage, edges, 100, 200); CvInvoke.FindContours(edges, vvp, b1, RetrType.Ccomp, ChainApproxMethod.ChainApproxNone); for (int i = 0; i < vvp.Size; i++) { CvInvoke.DrawContours(disp, vvp, i, new MCvScalar(255,255,255), 1); } for (int i = 0; i < vvp.Size; i++) { for (int j = 0; j < vvp[i].Size; j++) { res.Data[vvp[i][j].Y, vvp[i][j].X, 0] = 255; } } CvInvoke.Imshow("res", res); CvInvoke.Imshow("disp", disp);
有两种方法可以显示提取的轮廓
自带的drawContours
VectorOfVectorOfPoint中存放的数据点
原图和显示的图像如下:
相关文章推荐
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
- 14.JAVA编程思想——通用集合库
- CF #347 (Div.2) B. Rebus(贪心)
- 进程间通信(4)---最高效的进程间通信方式--内存共享
- 13.JAVA编程思想——排序
- LSB的JAVA实现,随便写写,也不知道有什么用0.0
- 用 Python 和 OpenCV 检测图片上的条形码
- 那些年,学swift踩过的坑
- JS组件Bootstrap dropdown组件扩展hover事件
- String与StringBuffer的区别
- 软件第五次作业
- php中die(),exit(),return的区别
- 阿里云oss-c-sdk交叉编译
- POJ 2377 Bad Cowtractors
- Android小程序-日历选择器
- 排序算法稳定性
- 二进制常用工具
- java jar war 打包解压命令
- 30分钟了解C++11新特性
- ld: -pie can only be used when targeting iOS 4.2 or later clang: error: linker command failed with e