OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

server/2024/12/22 19:53:16/
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

围绕一组2D点拟合一个椭圆。

该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据可能包含负索引。”

fitEllipse 函数是 OpenCV 库中的一个常用函数,用于拟合一个椭圆来描述一组点。这个函数通常用于图像处理和计算机视觉任务中,例如物体检测、形状分析等。

函数原型


RotatedRect cv::fitEllipse
(	InputArray 	points
)	

参数

  • 参数points 输入的2D点集。这些点可以存储在 std::vector 或 Mat 中。

代码示例


#include <opencv2/opencv.hpp>
#include <vector>using namespace cv;int main()
{// 创建一个空白图像Mat img( 400, 400, CV_8UC3, Scalar( 255, 255, 255 ) );// 创建一组2D点std::vector< Point2f > points;points.push_back( Point2f( 150, 100 ) );points.push_back( Point2f( 100, 150 ) );points.push_back( Point2f( 200, 150 ) );points.push_back( Point2f( 200, 250 ) );points.push_back( Point2f( 100, 250 ) );points.push_back( Point2f( 150, 300 ) );// 拟合椭圆RotatedRect ellipse2 = fitEllipse( points );// 绘制拟合的椭圆Point2f center = ellipse2.center;  // 椭圆中心Size2f axes    = ellipse2.size;    // 轴长float angle    = ellipse2.angle;   // 旋转角度ellipse( img, center, axes, angle, 0, 360, Scalar( 0, 0, 255 ), 2 );// 绘制原始点for ( const auto& pt : points ){circle( img, pt, 5, Scalar( 0, 255, 0 ), -1 );}// 显示结果namedWindow( "Ellipse Fitting", WINDOW_AUTOSIZE );imshow( "Ellipse Fitting", img );waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述


http://www.ppmy.cn/server/115759.html

相关文章

Maven 常见问题以及常用命令

常见问题 &#xff1a; 1. 识别不了maven项目 mvn clean install -Dmaven.test.skiptrue //构建 2. 打jar包时报异常 指定下jdk版本 常用命令&#xff1a; mvn clean mvn package mvn install mvn deploy

Java项目: 基于SpringBoot+mybatis+maven大学生就业招聘系统(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven大学生就业招聘系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作…

【计算机网络】初识网络

初识网络 初识网络网络的发展局域网广域网 网络基础IP地址端口号协议五元组协议分层OSI 七层模型TCP/IP五层模型封装和分用"客户段-服务器"结构 初识网络 网络的发展 在过去网络还没有出现的时候, 我们的计算机大部分都是独自运行的, 比如以前那些老游戏, 都是只能…

优思学院|工厂中的主要作业流程管理

工厂最主要的部分是制造产品的现场&#xff0c;也就是左图标注的“制造的地方”。这里除了安装生产工具&#xff0c;还有作业员进行加工或生产制造。 制造时使用的材料或零部件需要对外采购&#xff0c;这部分工作就是下图中的“采购”。对于加工组装型的工厂来说&#xff0c;…

MFC修改控件ID的详细说明

控件的ID可以在该对话框的.rc中修改 首先需要开启资源视图 然后在资源视图中打开该对话框 选中某个控件&#xff0c;就可以在属性面板中修改ID了 在此处修改ID后&#xff0c;对应Resource.h中也会发生变化 若在.rc中创建了一个控件时&#xff0c;Resource.h中会生成一个对应…

javascript网页设计案例

设计一个具有良好用户体验的 JavaScript 网页涉及多个方面&#xff0c;如用户界面&#xff08;UI&#xff09;、用户体验&#xff08;UX&#xff09;、交互设计等。以下是一些示例案例&#xff0c;展示了如何使用 JavaScript 创建功能丰富且吸引人的网页设计。 1. 响应式导航菜…

MUR3040CT-ASEMI快恢复二极管MUR3040CT

编辑&#xff1a;ll MUR3040CT-ASEMI快恢复二极管MUR3040CT 型号&#xff1a;MUR3040CT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220AB 安装方式&#xff1a;插件 批号&#xff1a;最新 恢复时间&#xff1a;35ns 最大平均正向电流&#xff08;IF&#xff09;&#…

MonoHuman: Animatable Human Neural Field from Monocular Video 精读

一、共享双向变形模块 1. 模块的核心思想 共享双向变形模块的核心目标是解决从单目视频中生成不同姿态下的3D人体形状问题。因为视频中的人物可能处于各种动态姿态下&#xff0c;模型需要能够将这些不同姿态的几何形状进行变形处理&#xff0c;以适应标准的姿态表示并生成新的…