当前位置: 首页 > news >正文

OpenCV-最小外接圆cv::minEnclosingCircle

作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

函数原型

void minEnclosingCircle(InputArray points, Point2f& center, float& radius);

参数说明

  1. InputArray类型的points,输入点集,用于拟合外接圆。
  2. Point2f类型的center,拟合圆的中心点。
  3. float类型的radius,拟合圆的半径。

测试代码

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main() {// 创建一个黑色背景的图像Mat image(400, 400, CV_8UC3, Scalar(0, 0, 0));// 定义五边形的顶点vector<Point> vertices;vertices.push_back(Point(200, 50));vertices.push_back(Point(100, 150));vertices.push_back(Point(150, 300));vertices.push_back(Point(250, 300));vertices.push_back(Point(300, 150));// 在图像上绘制五边形const Point* points[1] = { &vertices[0] };int numPoints[] = { vertices.size() };polylines(image, points, numPoints, 1, true, Scalar(0, 255, 0), 2);// 将图像转换为灰度图Mat gray;cvtColor(image, gray, COLOR_BGR2GRAY);// 对灰度图进行模糊处理,以便更好地检测边缘GaussianBlur(gray, gray, Size(5, 5), 0);// 使用Canny边缘检测算法检测边缘Mat edges;Canny(gray, edges, 50, 150);// 寻找轮廓vector<vector<Point>> contours;findContours(edges, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);// 计算最小外接圆并绘制Mat result = image.clone();for (size_t i = 0; i < contours.size(); i++) {Point2f center;float radius;minEnclosingCircle(contours[i], center, radius);circle(result, center, (int)radius, Scalar(255, 255, 255), 2);}// 显示结果imshow("Ori", image);imshow("Min Enclosing Circle", result);waitKey(0);return 0;
}

测试效果

       测试代码中,我人为定义了一个五边形,用函数执行后得到其最小外接圆。

       如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

相关文章:

  • 删除Windows网络连接的网络编号,网络号,有线网卡的网络1,网络2....,快速批量删除每次增加的网络序号
  • Pulsar 社区周报 | No.2024-05-30 | BIGO 百页小册《Apache Pulsar 调优指南》
  • fast admin实现多数据库导入数据
  • printf 一次性写
  • 网络协议二
  • 【Nacos】docker-compose启动nacos v2.2.3,启动时修改默认密码不使用naocs
  • ChatGPT Edu版本来啦:支持GPT-4o、自定义GPT、数据分析等
  • 全文检索-ElasticSearch
  • 在python中连接了数据库后想要在python中通过图形化界面显示数据库的查询结果,请问怎么实现比较好? /ttk库的treeview的使用
  • 【网络原理】HTTP|认识请求“报头“|Host|Content-Length|Content-Type|UA|Referer|Cookie
  • 07C回调函数
  • SpringCloud Sleuth 分布式请求链路跟踪
  • 【控制实践——四旋翼无人机】【一】四旋翼无人机运动分析和建模
  • Mysql全文搜索和LIKE搜索有什么区别
  • 【PB案例学习笔记】-15怎样限制应用程序运行次数?
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Django 博客开发教程 16 - 统计文章阅读量
  • express + mock 让前后台并行开发
  • HTML-表单
  • Node + FFmpeg 实现Canvas动画导出视频
  • Python进阶细节
  • spring-boot List转Page
  • 前端之React实战:创建跨平台的项目架构
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 新手搭建网站的主要流程
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • #ifdef 的技巧用法
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (19)夹钳(用于送货)
  • (70min)字节暑假实习二面(已挂)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (二)Linux——Linux常用指令
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)计算机毕业设计大学生兼职系统
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (论文阅读30/100)Convolutional Pose Machines
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (转)http协议
  • *** 2003
  • ..回顾17,展望18
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core 中插件式开发实现
  • .NET Core中如何集成RabbitMQ
  • .NET 解决重复提交问题
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例