java 椭圆拟合,OpenCV画轮廓的外界圆矩形椭圆等
#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画轮廓的外界圆矩形椭圆等相关推荐
- opencv实现轮廓的内接正矩形
参考python-opencv 图像捕捉多个不规则轮廓,与轮廓内接区域(圆/矩形)思路-持续更新编辑中(会附上详细的思路解释和图片) - Lorzen - 博客园 前言 提示:利用中心延展算法的思想, ...
- opencv 绘制轮廓边框 多边形 圆形 矩形
如何使用opencv 绘制轮廓边框最小包裹 多边形 圆形 矩形? 函数说明: Rect boundingRect(InputArray points) points:输入信息,可以为包含点的容器(ve ...
- android opencv画轮廓,如何在Android的OpenCV中从每个轮廓提取线条?
我想检查每个Canny检测到的边缘,并在其中寻找主线(以检查它们是否看起来像一个矩形,例如,两对线是否平行等). Imgproc.HoughLinesP可以满足我的要求,但是它给出了整个图像中的线条, ...
- java 利用继承和多态设计三角形,圆矩形
//郑州轻工业大学 //题号:实验三 第二题 //题目:利用继承和多态设计图形类.要求如下: (1)三角形属性为三个顶点坐标,矩形属性为其左上角和右下角两点坐标,圆为圆心和圆上任一点的坐标. (2)三 ...
- matlab画椭圆 长轴 短轴,跟踪目标的快速椭圆拟合方法
摘 要: 提出一种基于最小外包矩形的快速椭圆拟合方法,该方法利用最小二乘法获得目标的最小外包矩形框,再求取外包矩形框的内切椭圆,该椭圆能有效反映目标的大部分运动信息.本文对该方法进行了目标拟合的有效 ...
- C++opencv找圆心?看着一篇,一定有你要(边缘轮廓检测,拟合,凸包)找出相应的轮廓或者全部轮廓画外界圆轮廓并且标出轮廓中心
一,利用面积对轮廓进行筛选 注意这种面积筛选有一个弊端就是比如有两个轮廓, A轮廓为500 B轮廓为300 当面积设置为 area<400时就可以筛选出面积小于300的所有轮廓 反之大于300的 ...
- OpenCV轮廓提取和椭圆拟合
今天用到了几个函数,作个总结. 首先是在二值图像中找轮廓,我的图象中只有一条轮廓,所以使用比较简单. 首先要分配存储空间,使用函数cvCreateMemStorage(0)分配一个默认大小的CvMem ...
- opencv findContours()轮廓特征分析大全(求面积、周长、几何矩、质心、凸包、最小外接矩形、最小外接三角形、最小外接椭圆等)
文章目录 前言 一.效果 二.opencv对应函数介绍 1.轮廓面积 2.轮廓周长 3.轮廓几何矩 4.轮廓的最大外接矩形 5.轮廓的凸包 6.轮廓的最小外接矩形 7.轮廓的最小外接三角形 8.轮廓的 ...
- c# 椭圆拟合库_利用C#版OpenCV实现圆心求取实例代码
前言 OpenCVSharp是OpenCV的.NET wrapper,是一名日本工程师开发的,项目地址为:https://github.com/shimat/opencvsharp. 该源码是 BSD ...
最新文章
- WCF加密操作(包括证书和证书+帐号密码)
- 数字线索: F-35单价已低于四代机,其成本控制是如何实现的?
- 哈尔滨阳光计算机学院是不是黄了,黑龙江这4所野鸡大学,常被误认为是名校,实则害人不浅...
- 使用 System.Net.Http.Json 简化 HttpClient 的使用
- 网页常用Javascript
- calibre for linux,calibre - 
下载Linux版
- linux的sendmail服务有啥用,Linux的SendMail服务
- java程序运行过程数据丢失怎么办_java运行过程中OutOfMemoryError是什么原因?怎么解决...
- python - 接口自动化测试 - MysqlUtil - 数据库操作封装
- svn 安装 IntelliJ IDEA 配置svn
- 电子信息系统机房设计规范
- Mac OS X的入门文档
- 华为和荣耀学编程计算机推荐,2020~2021笔记本电脑推荐(华为篇)
- 不会编程,别着急!免编程工具助你快速开发App
- 2021年六级英文作文:China’s achievement in higher education.
- word怎么转pdf原格式不变?可以试试这个途径
- day29 | 216.组合总和III 17.电话号码的字母组合
- 混合式步进电机控制器开源系列(一)PCB原理图设计
- 使用AMCap调整相机参数
- 企业容器云管理平台选型指南