EmguCv多边形包围
外接矩形
外接最小面积矩形(旋转矩形)
外接闭合圆形
外接三角形
外接多边形(凸包检测)
//多边形包围private void btn_surround_Click(object sender, EventArgs e){if (ib_original.Image != null){Mat src = new Image<Bgr, byte>(ib_original.Image.Bitmap).Mat;Mat dst = new Mat();Image<Bgr, byte> img = new Image<Bgr, byte>(ib_original.Image.Bitmap);CvInvoke.Canny(src, dst, 120, 180);//创建用于存储轮廓的VectorOfVectorOfPoint数据类型VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint();CvInvoke.FindContours(dst, contours, null, Emgu.CV.CvEnum.RetrType.External,Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);//获取联通区域个数int ksize = contours.Size;for (int i = 0; i < ksize; i++){//获取独立的连通轮廓VectorOfPoint contour = contours[i];string str = ((Button)sender).Text;switch (str){case "外接矩形":{Rectangle rect = CvInvoke.BoundingRectangle(contour);img.Draw(rect, new Bgr(0, 0, 255), 2);}break;case "外接面积最小矩形":{RotatedRect rrect = CvInvoke.MinAreaRect(contour);img.Draw(rrect, new Bgr(0, 0, 255), 2);}break;case "外接闭合圆形":{CircleF circle = CvInvoke.MinEnclosingCircle(contour);img.Draw(circle, new Bgr(0, 0, 255), 2);}break;case "外接三角形":{VectorOfPoint tri = new VectorOfPoint();//存储三角形double area = CvInvoke.MinEnclosingTriangle(contour, tri);img.Draw(tri.ToArray(), new Bgr(0, 0, 255), 2);}break;case "外接多边形":{//也叫凸包检测VectorOfPoint hull = new VectorOfPoint();//存储凸包点CvInvoke.ConvexHull(contour, hull);img.Draw(hull.ToArray(), new Bgr(0, 0, 255), 2);}break;default:break;}}ib_result.Image = img;}}
EmguCv多边形包围相关推荐
- OpenCV精进之路(八):图像轮廓和图像分割修复——轮廓查询和多边形包围轮廓
Canny一类的边缘检测算法可以根据像素之间的差异,检测出轮廓边界的像素,但它没有将轮廓作为一个整体.所以要将轮廓提起出来,就必须将这些边缘像素组装成轮廓. OpenCV中有一个很强大的函数,它可以从 ...
- 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(三)使用多边形将轮廓包围
8.3 使用多边形将轮廓包围 8.3.1 将轮廓包围的多边形函数 1.返回外部边界:boundingRect()函数 (1)作用:返回指定点集最外面的边界矩形(四个顶点) (2)函数原型:Rect b ...
- opencv 多边形近似物体形状
前面我们学习过最小外接矩和最小外接圆,那么可以用一个最小的多边形包围物体吗?当然可以: 其中 cv.approxPolyDP() 的参数1是源图像的某个轮廓:参数2(epsilon)是一个距离值,表示 ...
- 图像轮廓、凸包、图像的矩、分水岭算法、图像修补
文章目录 1.查找并绘制轮廓 1.1 寻找轮廓:findContours() 函数 1.2 绘制轮廓:drawContours() 函数 1.3 示例程序:轮廓查找 1.4 综合示例:查找并绘制轮廓 ...
- VTK修炼之道50:图形基本操作进阶_网格模型的特征边 与 封闭性检测
1.封闭性检测 由于受原始数据.重建方法的限制,得到的网格模型并不是封闭的.有时为了显示或者处理某些要求,需要网格必须是封闭的. 封闭性网格应该比较好理解,比如一个球形网格. 1.1网格模型边的分类 ...
- OpenGL编程低级错误范例手册
看到一篇OpenGL编程的错误总结,对我初学来说应该比较有用,先保留,嘿嘿... 谢谢原文作者的贡献:http://www.cnitblog.com/linghuye/archive/2005/08/ ...
- 【浅墨著作】 OpenCV3编程入门 内容简介 勘误 配套源代码下载
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 经过近一 ...
- (31)ObjectARX2015 + vs2012选择集
1. 说明 在 ObjectARX 开发过程中,经常需要用户和 AutoCAD 之间进行交互操作,除了前面介绍的acedGetXX系列函数之外,选择集是AutoCAD和用户交互操作的重 ...
- opencv3-编程入门学习笔记
文档才是最重要的,所有函数都能在文档中找到opencv文档 顺便说我用的IDE QTcreator,工作空间不在源码处,而在debug里,因此所需文件要放在那里 具体目录在 项目-运行-working ...
最新文章
- MOOON-server新消息处理接口
- 史上最强神经网络绘制神器来啦!一系列暗黑操作!
- React Native学习笔记-1:JSC profiler is not supported.(转载)
- BPEL 语言介绍和应用
- 搭建MongoDB分片集群
- 使用docker-compose配置redis服务
- Disk Quota磁盘配额
- [转]Xdebug----Failed loading
- JavaOne正在重建动力
- mybatis处理集合、循环、数组和in等语句的使用
- 「任性」的C语言之父:因拒付论文装订费错失博士学位,论文52年后重见天日...
- 多因素方差分析中预测因素的筛多_用回归来理解方差分析(二):两因素方差分析...
- python定义test方法_向python/django失败的测试方法的详细信息中添加自定义/调试消息的任何方法unittest.TestCase?...
- RuntimeError: Working outside of request context. This typically means that you attempted to use fun
- java传输文件暂停_java – 在文件下载中实现暂停/恢复
- golang | windows平台golang环境搭建(过坑之后)
- 设计模式之---解释器模式
- 《剑指offer》第五十二题(两个链表的第一个公共结点)
- dq坐标系下无功功率表达式_基于数学形态学的谐波检测
- java 噪声信道模型_噪声信道模型zz