#include

#include

#include

#include

using namespace std;

#pragma   comment(lib,"cv.lib")

#pragma   comment(lib,"highgui.lib")

#pragma   comment(lib,"cxcore.lib")

int main()

{

IplImage *src = cvLoadImage("D:\\三值canny的图.bmp",0);

//IplImage *src = cvLoadImage("D:\\BoardStereoL3.jpg",0);

CvMemStorage *storage = cvCreateMemStorage(); //创建一个内存区域,该区域是额可以动态增长的

CvSeq *seq = NULL;  //定义一个序列,这些序列可以存放在上面的内存区域里

int cnt = cvFindContours(src,storage,&seq,sizeof(CvContour),2);// // //默认:mode=CV_RETR_LIST,检索所偶轮廓

seq = seq->v_next;

int c=seq->total;//当前轮廓包含多少个元素,这里的元素为点

double length = cvArcLength(seq); //得到指定的那个轮廓的周长

//该函数有3个参数:序列,起点(默认计算整条曲线),是否封闭曲线

double area = cvContourArea(seq);  //得到指定的那个轮廓的面积

CvRect rect = cvBoundingRect(seq,1);  //根据序列,返回轮廓外围矩形;

CvBox2D box = cvMinAreaRect2(seq,NULL); //最小外围矩形

cout<

cout<

CvPoint pt1,pt2;

pt1.x=rect.x;

pt1.y=rect.y;

pt2.x=rect.x+rect.width;

pt2.y=rect.y+rect.height;

IplImage *dst = cvCreateImage(cvGetSize(src),8,3); //目标图像为3通道图

cvZero(dst);

cvDrawContours(dst,seq,CV_RGB(255,0,0),CV_RGB(255,0,0),0);

cvRectangle(dst,pt1,pt2,CV_RGB(0,255,0));

cvNamedWindow("dst",1);

cvShowImage("dst",dst);

cvWaitKey();

CvPoint2D32f center;

float radius;

int a=  cvMinEnclosingCircle(seq,¢er,&radius); //根据序列画出最小面积外接圆

cout<

cout<

cout<

//圆必须是包含所有点,成功返回1,并且得到圆心和半径

cvCircle(dst,cvPointFrom32f(center),cvRound(radius),CV_RGB(100,100,100));

cvShowImage("dst",dst);

cvWaitKey();

CvBox2D ellipse = cvFitEllipse2(seq);//最小二乘法的椭圆拟合

cvEllipseBox(dst,ellipse,CV_RGB(255,255,0)); //在图上画椭圆

cvShowImage("dst",dst);

cvWaitKey();

//绘制外接最小矩形

CvPoint2D32f pt[4];

cvBoxPoints(box,pt);

for(int i = 0;i<4;++i){

cvLine(dst,cvPointFrom32f(pt[i]),cvPointFrom32f(pt[((i+1)%4)?(i+1):0]),CV_RGB(0,0,255));

}

cvShowImage("dst",dst);

cvWaitKey();

cvReleaseImage(&src);

cvReleaseImage(&dst);

cvReleaseMemStorage(&storage);

}

java 椭圆拟合,OpenCV画轮廓的外界圆矩形椭圆等相关推荐

  1. opencv实现轮廓的内接正矩形

    参考python-opencv 图像捕捉多个不规则轮廓,与轮廓内接区域(圆/矩形)思路-持续更新编辑中(会附上详细的思路解释和图片) - Lorzen - 博客园 前言 提示:利用中心延展算法的思想, ...

  2. opencv 绘制轮廓边框 多边形 圆形 矩形

    如何使用opencv 绘制轮廓边框最小包裹 多边形 圆形 矩形? 函数说明: Rect boundingRect(InputArray points) points:输入信息,可以为包含点的容器(ve ...

  3. android opencv画轮廓,如何在Android的OpenCV中从每个轮廓提取线条?

    我想检查每个Canny检测到的边缘,并在其中寻找主线(以检查它们是否看起来像一个矩形,例如,两对线是否平行等). Imgproc.HoughLinesP可以满足我的要求,但是它给出了整个图像中的线条, ...

  4. java 利用继承和多态设计三角形,圆矩形

    //郑州轻工业大学 //题号:实验三 第二题 //题目:利用继承和多态设计图形类.要求如下: (1)三角形属性为三个顶点坐标,矩形属性为其左上角和右下角两点坐标,圆为圆心和圆上任一点的坐标. (2)三 ...

  5. matlab画椭圆 长轴 短轴,跟踪目标的快速椭圆拟合方法

    摘  要: 提出一种基于最小外包矩形的快速椭圆拟合方法,该方法利用最小二乘法获得目标的最小外包矩形框,再求取外包矩形框的内切椭圆,该椭圆能有效反映目标的大部分运动信息.本文对该方法进行了目标拟合的有效 ...

  6. C++opencv找圆心?看着一篇,一定有你要(边缘轮廓检测,拟合,凸包)找出相应的轮廓或者全部轮廓画外界圆轮廓并且标出轮廓中心

    一,利用面积对轮廓进行筛选 注意这种面积筛选有一个弊端就是比如有两个轮廓, A轮廓为500 B轮廓为300 当面积设置为 area<400时就可以筛选出面积小于300的所有轮廓 反之大于300的 ...

  7. OpenCV轮廓提取和椭圆拟合

    今天用到了几个函数,作个总结. 首先是在二值图像中找轮廓,我的图象中只有一条轮廓,所以使用比较简单. 首先要分配存储空间,使用函数cvCreateMemStorage(0)分配一个默认大小的CvMem ...

  8. opencv findContours()轮廓特征分析大全(求面积、周长、几何矩、质心、凸包、最小外接矩形、最小外接三角形、最小外接椭圆等)

    文章目录 前言 一.效果 二.opencv对应函数介绍 1.轮廓面积 2.轮廓周长 3.轮廓几何矩 4.轮廓的最大外接矩形 5.轮廓的凸包 6.轮廓的最小外接矩形 7.轮廓的最小外接三角形 8.轮廓的 ...

  9. c# 椭圆拟合库_利用C#版OpenCV实现圆心求取实例代码

    前言 OpenCVSharp是OpenCV的.NET wrapper,是一名日本工程师开发的,项目地址为:https://github.com/shimat/opencvsharp. 该源码是 BSD ...

最新文章

  1. WCF加密操作(包括证书和证书+帐号密码)
  2. 数字线索: F-35单价已低于四代机,其成本控制是如何实现的?
  3. 哈尔滨阳光计算机学院是不是黄了,黑龙江这4所野鸡大学,常被误认为是名校,实则害人不浅...
  4. 使用 System.Net.Http.Json 简化 HttpClient 的使用
  5. 网页常用Javascript
  6. calibre for linux,calibre - 下载Linux版
  7. linux的sendmail服务有啥用,Linux的SendMail服务
  8. java程序运行过程数据丢失怎么办_java运行过程中OutOfMemoryError是什么原因?怎么解决...
  9. python - 接口自动化测试 - MysqlUtil - 数据库操作封装
  10. svn 安装 IntelliJ IDEA 配置svn
  11. 电子信息系统机房设计规范
  12. Mac OS X的入门文档
  13. 华为和荣耀学编程计算机推荐,2020~2021笔记本电脑推荐(华为篇)
  14. 不会编程,别着急!免编程工具助你快速开发App
  15. 2021年六级英文作文:China’s achievement in higher education.
  16. word怎么转pdf原格式不变?可以试试这个途径
  17. day29 | 216.组合总和III 17.电话号码的字母组合
  18. 混合式步进电机控制器开源系列(一)PCB原理图设计
  19. 使用AMCap调整相机参数
  20. 企业容器云管理平台选型指南

热门文章

  1. asterisk 对接 移动IMS 外呼接通时返487错误(已解决)
  2. 2021年全球与中国机车(机车车辆)行业市场规模及发展前景分析
  3. 计算机无法加载远程访问连接管理器服务,Win7网络无法加载远程访问连接管理器服务怎么办...
  4. Android 图片下载或上传时请求失败。
  5. Win10添加简体中文美式键盘的方法
  6. CoreJava基础
  7. 主成分分析碎石图_用R软件包ade4做主成分分析图(PCA)
  8. python 喜马拉雅 音乐下载 演示代码
  9. CryptoJS 加密的使用方法
  10. 从苏宁电器到卡巴斯基第04篇:我的本科时光(补)