opencv中的椭圆拟合

首先贴一个最简单的程序:访问:https://blog.csdn.net/guduruyu/article/details/70069426

//创建一个用于绘制图像的空白图    
cv::Mat image = cv::Mat::ones(480, 640, CV_8UC3);  
//设置蓝色背景  
image.setTo(cv::Scalar(100, 0, 0));  //输入拟合点    
std::vector<cv::Point> points;  points.push_back(cv::Point(200, 240));  
points.push_back(cv::Point(300, 400));  
points.push_back(cv::Point(400, 360));  
points.push_back(cv::Point(500, 300));  
points.push_back(cv::Point(500, 200));  
points.push_back(cv::Point(300, 150));  //将拟合点绘制到空白图上    
for (int i = 0; i < points.size(); i++)  
{  cv::circle(image, points[i], 5, cv::Scalar(0, 0, 255), 2, 8, 0);  
}  //获取拟合椭圆的外包围矩形  
cv::RotatedRect rotate_rect = cv::fitEllipse(points);  
//绘制拟合椭圆  
cv::ellipse(image, rotate_rect, cv::Scalar(0, 255, 255), 2, 8);  cv::imshow("image", image);  
cv::waitKey(0);  

其次,这里有关于opencv椭圆拟合的各种定义:https://blog.csdn.net/suky520/article/details/18601307

opencv中的椭圆通过RotatedRect来定义,其center(块中心(x,y)), size(宽和高,宽小于高), angle(旋转角)分别对应椭圆的中心,短轴长轴,旋转角度。 

         RotatedRect box = fitEllipse(pointsf);  //把那些长轴与短轴之比很多的那些椭圆剔除。  if( MAX(box.size.width, box.size.height) > MIN(box.size.width, box.size.height)*8 )  continue;  //绘制轮廓  drawContours(cimage, contours, (int)i, Scalar::all(255), 1, 8);  //绘制椭圆  ellipse(cimage, box, Scalar(0,0,255), 1, CV_AA);  //绘制椭圆  // ellipse(cimage, box.center, box.size*0.5f, box.angle, 0, 360, Scalar(0,255,255), 1, CV_AA);  //注意这里需要乘以0.5
最后,目前opencv3中支持三种椭圆拟合方式:fitEllipse,fitEllipseAMS,fitEllipseDirect,其中第三种来自《 Direct least squares fitting of ellipsees, Fitzgibbon, Pilu and Fischer in Fitzgibbon, A.W., Pilu, M., and Fischer R.B.,Proc. of the 13th Internation Conference on Pattern Recognition, pp 253–257, Vienna, 1996》


可以访问https://docs.opencv.org/trunk/de/dc7/fitellipse_8cpp-example.html

来看官方的椭圆拟合事例。 


参考链接:

1. https://blog.csdn.net/suky520/article/details/18601307

2. https://www.cnblogs.com/as3asddd/p/7455712.html

3. https://blog.csdn.net/u012566751/article/details/54345465 

4. https://blog.csdn.net/guduruyu/article/details/70069426

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unix c 11

多线程(thread) 操作系统支持多进程&#xff0c;进程内部使用多线程。 进程是 重量级的&#xff0c;拥有自己 独立的内存空间。 线程是 轻量级的&#xff0c;不需要拥有自己 独立的内存空间&#xff0c;线程的内存空间&#xff1a;1 共享进程的内存空间 2 每个线程拥有…

C# .net core 使用自定义的WebProxy

为什么80%的码农都做不了架构师&#xff1f;>>> 因为.net core 的System.Net 中没有提供WebProxy这个方法,所以可以根据需求实现一个. public class CoreWebProxy : IWebProxy{public readonly Uri Uri;private readonly bool bypass;public CoreWebProxy(Uri uri,…

2015年08月

2015年07月 - 2015年09月 ● 一般而言。。。 一般而言&#xff0c;牙周病轻者有口臭、牙龈红肿疼痛、刷牙流血等症状&#xff0c;严重时会造成牙龈萎缩、牙齿敏感、牙齿摇动等情况。口腔没有在饮食后30分钟清洁就会逐渐转化为酸性环境&#xff08;PH值约5.5&#xff09;&#x…

python类汇总_Python 类总结

Python可以继承多个父类&#xff0c;多重继承。类支持多个对象的产生&#xff0c;命名空间的继承&#xff0c;运算符重载1)、类产生多个实例对象Python OOP模型中的两种对象&#xff1a;类对象和实例对象。类对象提供默认的行为&#xff0c;是实例对象的工厂。实例对象是程序处…

matlab ,python,c++关于格式化输出数字的表达

我们想要格式化输出1,2,3&#xff0c;...为001,002,003 ... 那么在matlab,python,c该如何表达呢&#xff1f; matlab: >> filedirsprintf(%03i,10)filedir 010 or >> imagenamenum2str(10,%03d)imagename 010 python: index_str %03d % 10index_str Ou…

读取Exchange的用户未读邮件数的几种方法

【http://www.cnblogs.com/nbpowerboy/p/3539422.html】 可以使用ExchangeServiceBinding获取邮件&#xff0c;他相当于outlook, 来获取服务器的未接受的邮件. 至于 “该帐户无权模拟所请求的用户 ” ,是由于在exchange服务器上面没有配置模拟账户. 需要在Exchange Management …

IOS第七天(2:UiTableView 加上数据分离)

****加上数据分离 #import "HMViewController.h" #import "HMStudent.h"interface HMViewController () <UITableViewDataSource> property (weak, nonatomic) IBOutlet UITableView *tableView;/** 数据列表 */ property (nonatomic, strong) NSArr…

观点:Linux 上的杀毒软件

刚刚进入二月&#xff0c;在360安全卫士 for Linux瞬间更名为360安全卫士国产系统专版。紧接着不久&#xff0c;Dr.Web 宣布发现一款可能源自 ChinaZ 的 Linux 系统的后门程序。加之又被朝内媒体炒作起来的 OpenSSL 基金会事宜&#xff0c;不由得思绪飘溢&#xff0c;再看看 Li…

使用opencv的LBF算法进行人脸关键点检测

首先下载最新的opencv 和opencv_contrib, 然后按照在Windows下编译扩展OpenCV 3.1.0 opencv_contrib的方法进行编译&#xff0c;其中核心一点就是先编译opencv&#xff0c;再在OPENCV_EXTRA_MODULES_PATH中加入opencv_contrib的modules的路径。 编译好了后就可以进行人脸关键…

scala case class 继承_数字硬件系统设计之一:Scala快速入门(2)

原想简单笼统介绍一下scala&#xff0c;后感觉这么做意思不大&#xff0c;网友看了和没看一样&#xff0c;还是应该稍微详细具体一点&#xff0c;故而把系列编号由(上)(中)(下)&#xff0c;改为(上)(2)(3)(4)(5)....,(上)就是(1)吧&#xff0c;以下内容部分节选于我们即将出版的…

Ubuntu下安装FTP服务及使用(VSFTPD详细设置)(二)

vsftpd 作为一个主打安全的FTP服务器&#xff0c;有很多的选项设置。下面介绍了vsftpd的配置文件列表&#xff0c;而所有的配置都是基于vsftpd.conf这个配置文件 的。本文将提供完整的vsftpd.conf的中文说明。学习本文的内容将有助于你初步了解vsftpd的配置文件&#xff0c;但针…

crontab命令

前一天学习了 at 命令是针对仅运行一次的任务&#xff0c;循环运行的例行性计划任务&#xff0c;linux系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作&#xff0c;因此这个系统服务是默认启动的。另外, 由于使用者自己也可以设置计划…

调查显示企业对 Linux 开发人才需求日渐增长

根据2014年Linux就业报告调查显示&#xff0c;随着Linux平台增长&#xff0c;Linux平台开发者就业需求较去年提升了7%&#xff0c;技术公司招聘Linux开发经历的人才需求达到 77%&#xff0c;这是来自Dice和Linux基金会共同对就业市场对Linux人才的全景式调查&#xff0c;调查访…

求圆和椭圆上任意角度的点的坐标

圆上任意角度的点的坐标 如上图&#xff0c;给定圆心&#xff08;Cx,Cy&#xff09;,半径为R&#xff0c; 求θ\thetaθ对应的点的坐标&#xff1f; 此处θ\thetaθ是相对于水平轴的角度。 显然我们可以使用极坐标转换来求&#xff1a; {pxCxRcos(θ)pyCyRsin(θ)\left\{\begi…

BZOJ ac100题存档

不知不觉AC100题了&#xff0c;放眼望去好像都是水题。在这里就做一个存档吧&#xff08;特别感谢各位大神尤其是云神http://hi.baidu.com/greencloud和丽洁姐http://wjmzbmr.com/的blog提供的题解&#xff09; 代码什么的有时间在放。 1000: AB Problem 好吧&#xff0c;这也算…

Android Build.VERSION.SDK_INT兼容介绍

尽管Android向下兼容不好&#xff0c;但是一个程序还是可以在多个平台上跑的。向下兼容不好&#xff0c;接口改变&#xff0c;新的平台上不能用旧的API&#xff0c;旧的平台更不可能用新的API&#xff0c;不等于一个平台需要一个APK。可以在高SDK上开发&#xff0c;并在程序中作…

smtp中mailfrom是必须的吗_你是住在高层建筑中吗?这是你必须了解的

01PARTONE消防电梯和普通客梯的作用及特点1.消防电梯是在建筑物发生火灾时供消防人员进行灭火与救援使用且具有一定功能的电梯。因此&#xff0c;消防电梯具有较高的防火要求&#xff0c;其防火设计十分重要。2.普通电梯均不具备消防功能&#xff0c;发生火灾时禁止人们搭乘电梯…

c++ 函数的值传递,引用传递 和 引用返回的探索

2019独角兽企业重金招聘Python工程师标准>>> 前言 C的函数参数和返回分为按值传递和按引用传递,应用到类上面,会涉及到类的 赋值操作 复制函数 构造函数 析构函数 虽然java开发了两年,但对我而言c我还只是一个初学者.c还有很多陌生的特性需要自己亲自探索.这里用实际…

GCD的部分总结

GCD是基于C语言的底层API,用Block定义任务用起来非常灵活便捷. GCD的基本思想是就将操作放在队列中去执行 (1)操作使用Blocks定义(2)队列负责调度任务执行所在的线程以及具体的执行时间(3)队列的特点是先进先出(FIFO)的&#xff0c;新添加至对列的操作都会排在队尾关于多线程的…

将bgr彩色矩阵归一化到0-255之间 【RGB image normalization】

参考下面文章&#xff0c;可以使用normalize 函数。 https://blog.csdn.net/kuweicai/article/details/78988886 对于彩色rgb图像&#xff0c;也可以直接使用以上函数, 参考 https://devtalk.nvidia.com/default/topic/1042100/rgb-image-normalization/?offset8 image cv2…