1、fitEllipse函数

二维点集的椭圆拟合,,用椭圆将二维点包含起来

2、fitEllipse函数调用形式

C++:RotatedRect fitEllipse(InputArray points)

函数的输入是:二维点集

输出是:RotatedRect的参数:包含中心点坐标,以及矩形的长度和宽度还有矩形的偏转角度

第二步-----------------------画出椭圆

2、

Ellipse函数

函数作用:根据输入的椭圆参数画出椭圆
函数形式:
C++:void ellipse(Mat&img, const RotatedRect&box, const Scalar& color, int thickness=1, intlineType=8)
opencv代码:
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>using namespace cv;
using namespace std;Mat src; Mat src_gray;
int thresh = 100;
int max_thresh = 255;
RNG rng(12345);/// Function header
void thresh_callback(int, void*);/** @function main */
int main(int argc, char** argv)
{/// 加载源图像src = imread("d:6.jpg", 1);/// 转为灰度图并模糊化cvtColor(src, src_gray, CV_BGR2GRAY);blur(src_gray, src_gray, Size(3, 3));/// 创建窗体char* source_window = "Source";namedWindow(source_window, CV_WINDOW_AUTOSIZE);imshow(source_window, src);createTrackbar(" Threshold:", "Source", &thresh, max_thresh, thresh_callback);thresh_callback(0, 0);waitKey(0);return(0);
}/** @function thresh_callback */
void thresh_callback(int, void*)
{Mat threshold_output;vector<vector<Point> > contours;vector<Vec4i> hierarchy;/// 阈值化检测边界threshold(src_gray, threshold_output, thresh, 255, THRESH_BINARY);/// 寻找轮廓findContours(threshold_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));/*cout << hierarchy[7][3] << contours.size();*//// 对每个找到的轮廓创建可倾斜的边界框和椭圆vector<RotatedRect> minRect(contours.size());vector<RotatedRect> minEllipse(contours.size());for (int i = 0; i < contours.size(); i++){minRect[i] = minAreaRect(Mat(contours[i]));if (contours[i].size() > 5){minEllipse[i] = fitEllipse(Mat(contours[i]));}}/// 绘出轮廓及其可倾斜的边界框和边界椭圆Mat drawing = Mat::zeros(threshold_output.size(), CV_8UC3);for (int i = 0; i< contours.size(); i++){Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));// contourdrawContours(drawing, contours, i, color, 1, 8, vector<Vec4i>(), 0, Point());// ellipseellipse(drawing, minEllipse[i], color, 2, 8);// rotated rectanglePoint2f rect_points[4]; minRect[i].points(rect_points);for (int j = 0; j < 4; j++)line(drawing, rect_points[j], rect_points[(j + 1) % 4], color, 1, 8);}/// 结果在窗体中显示namedWindow("Contours", CV_WINDOW_AUTOSIZE);imshow("Contours", drawing);
}

fitEllipse函数相关推荐

  1. cv2.fitEllipse函数详解:ellipse参数并根据参数计算出椭圆焦点坐标

    cv2.fitEllipse函数详解:ellipse参数并根据参数计算出椭圆焦点坐标 最近因为用到了这个函数,所以就趁着这个机会,好好顺顺,做下记录. ellipse = cv2.fitEllipse ...

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

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

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

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

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

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

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

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

  6. Python基于OpenCV的指针式表盘检测系统(附带源码&技术文档)

    1.背景 指针式机械表盘具有安装维护方便.结构简单.防电磁干扰等诸多优点, 目前广泛应用于工矿企业.能源及计量等部门.随着仪表数量的增加及精密仪表技术的发展,人工判读已经不能满足实际应用需求.随着计算 ...

  7. Opencv中,椭圆拟合后,得到该椭圆方程系数。

    opencv中,拟合椭圆后,常常需要得到该椭圆方向的系数,而网上大多数方法并未给出全部系数,因此有了这篇博客. fitEllipse函数拟合椭圆后,返回一个RotatedRect类型的值,Rotate ...

  8. 转:openCV基础图像处理

    参考资料: <OpenCV 2 Computer Vision Application Programming Cookbook> <The OpenCV Reference Man ...

  9. 8.opencv——图像轮廓,霍夫变换

    图像轮廓,霍夫变换 图像轮廓 查找轮廓 绘制轮廓 轮廓特征 1.轮廓的矩 2.轮廓面积 3.轮廓的长度 4. 轮廓的近似多边形 5.轮廓的凸包 6.轮廓的直边界矩形 7.轮廓的旋转矩形 8.轮廓的最小 ...

最新文章

  1. SAP MM 销售订单库存与普通库存之间相互转换过账后对于EBEWH以及MBEWH表的更新
  2. ios 设置属性的center_IOS开发-常用UI控件的基本使用(Transform形变属性、frame属性、center属性的使用)...
  3. “下沉市场”+“内容生态”,OTA的两道救命题?
  4. postgresql数据库用户名密码验证失败
  5. eclipse中经常用到的快捷键
  6. ASP.NET Core 3.x - Endpoint Routing 路由体系的内部机制
  7. 协议转换器的特点有哪些?
  8. web开发课程培训,10大前端常用算法,学习路线+知识点梳理
  9. 前端学习(1413):多人管理33修改2(未能完结)
  10. Arrays.copyOfRange
  11. 上一秒投简历下一秒被裁 ?小心,你的一举一动可能都在监控中
  12. VMware虚拟机中windows7系统的安装
  13. couchbase java 手册_Couchbase文档列表模型
  14. 7 基于matplotlib的python数据可视化——导入Excel数据制作饼图
  15. 令人深思的文章:也许你这辈子都只是个小人物
  16. mysql 计算农历_计算农历日期函数
  17. 微信小程序流量主广告怎么加圆角
  18. 程序员面试智力题(六)
  19. 2022茶艺师(初级)考试模拟100题模拟考试平台操作
  20. 图解Linux中EXT4与EXT3的区别

热门文章

  1. java frame 显示图片_java 图像显示
  2. adprw指令通讯案例_S7-1200与S7-300傻瓜式通讯
  3. 事务,Oracle,MySQL及Spring事务隔离级别
  4. 我的2017年文章汇总——Java及中间件篇
  5. shell实现统计浏览次数并将结果保存到文件中
  6. MathType公式保存后为什么字体会变化
  7. fopen参数mode详解
  8. html粘贴excel内容,如何用JS解析剪切板里的excel内容
  9. 简单线性分类学习机(平分最近点法)matlab实现
  10. 机器学习笔记(十五)规则学习