外接矩形

外接最小面积矩形(旋转矩形)

外接闭合圆形

外接三角形

外接多边形(凸包检测)

//多边形包围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多边形包围相关推荐

  1. OpenCV精进之路(八):图像轮廓和图像分割修复——轮廓查询和多边形包围轮廓

    Canny一类的边缘检测算法可以根据像素之间的差异,检测出轮廓边界的像素,但它没有将轮廓作为一个整体.所以要将轮廓提起出来,就必须将这些边缘像素组装成轮廓. OpenCV中有一个很强大的函数,它可以从 ...

  2. 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(三)使用多边形将轮廓包围

    8.3 使用多边形将轮廓包围 8.3.1 将轮廓包围的多边形函数 1.返回外部边界:boundingRect()函数 (1)作用:返回指定点集最外面的边界矩形(四个顶点) (2)函数原型:Rect b ...

  3. opencv 多边形近似物体形状

    前面我们学习过最小外接矩和最小外接圆,那么可以用一个最小的多边形包围物体吗?当然可以: 其中 cv.approxPolyDP() 的参数1是源图像的某个轮廓:参数2(epsilon)是一个距离值,表示 ...

  4. 图像轮廓、凸包、图像的矩、分水岭算法、图像修补

    文章目录 1.查找并绘制轮廓 1.1 寻找轮廓:findContours() 函数 1.2 绘制轮廓:drawContours() 函数 1.3 示例程序:轮廓查找 1.4 综合示例:查找并绘制轮廓 ...

  5. VTK修炼之道50:图形基本操作进阶_网格模型的特征边 与 封闭性检测

    1.封闭性检测 由于受原始数据.重建方法的限制,得到的网格模型并不是封闭的.有时为了显示或者处理某些要求,需要网格必须是封闭的. 封闭性网格应该比较好理解,比如一个球形网格. 1.1网格模型边的分类 ...

  6. OpenGL编程低级错误范例手册

    看到一篇OpenGL编程的错误总结,对我初学来说应该比较有用,先保留,嘿嘿... 谢谢原文作者的贡献:http://www.cnitblog.com/linghuye/archive/2005/08/ ...

  7. 【浅墨著作】 OpenCV3编程入门 内容简介 勘误 配套源代码下载

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 经过近一 ...

  8. (31)ObjectARX2015 + vs2012选择集

    1. 说明         在 ObjectARX 开发过程中,经常需要用户和 AutoCAD 之间进行交互操作,除了前面介绍的acedGetXX系列函数之外,选择集是AutoCAD和用户交互操作的重 ...

  9. opencv3-编程入门学习笔记

    文档才是最重要的,所有函数都能在文档中找到opencv文档 顺便说我用的IDE QTcreator,工作空间不在源码处,而在debug里,因此所需文件要放在那里 具体目录在 项目-运行-working ...

最新文章

  1. [零基础学JAVA]Java SE实战开发-37.MIS信息管理系统实战开发[JDBC](1)
  2. Java-JVM虚拟机内存垃圾回收机制gc入门:引用类型,对象标记算法,回收算法,常见的 garbage collector
  3. org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PUT' not supported
  4. youcans 的 OpenCV 学习课—2.图像读取与显示
  5. win10查看上次开机时间
  6. android连接此设备时打开,QtScrcpy: Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限...
  7. java开发和测试的不同_一些基础的面试的java知识,普及下。开发和测试都用得到。...
  8. krb5安装包 linux_Linux:krb5
  9. pycharm汉化包使用后无法打开设置选项问题
  10. 《纽约时报》畅销书作家发布新的COVID安全旅行提示电子书
  11. 电机PID控制补充篇-野火上位机串口协议介绍
  12. Excel批量填充空白行内容的方法及技巧
  13. 【Linux 编程】线程绑定 CPU
  14. 赵小楼《天道》《遥远的救世主》深度解析(140) ‘初恋’就是‘不可思议’的爱情。当你意识到‘它’的时候,它已经只存在‘回忆’里。
  15. 【锁屏】 Ubuntu20.04 锁屏快捷键无反应的解决方法
  16. SYBASE 12.5 维护手册 3. 技术专刊
  17. python金融量化分析 | 闲杂笔记
  18. 静雅小学学生信息管理系统的设计与实现
  19. html页面添加优酷视频,通过jsoup解析页面html获取优酷页面视频列表
  20. python 如何把图片合成视频

热门文章

  1. 可靠信号与不可靠信号
  2. Spring依赖注入的几个注解
  3. 标签打印软件中“打印背景”的应用
  4. Eudemon1000E防火墙用串口管理提示: User interface con0 is locked!
  5. 用Python爬取bilibili全站用户信息
  6. Java程序员千千万,想要涨薪的占一半,这篇读完,跳槽涨薪有希望了!
  7. 软件测试简历?面试题?企业面试官想要什么?我不再和offer失之交臂...
  8. linux下的zz命令,[zz]Linux下压缩命令
  9. error: use of deleted function
  10. 医药信息咨询公司排名TOP10是怎么进行收费的?