怎样求正多边形边长公式最小外接矩形的边长

[opencv] 寻找凸包、外接矩形、最小包围矩形,最小外接圆 - hust-阿超 - 博客园
随笔 - 12, 文章 - 0, 评论 - 0, 引用 - 0
1、cvConvexHull2 寻找凸包
hull := cvConvexHull2 (ptseq, 0, CV_CLOCKWISE, 1);//ptseq,hull:pCvS
//画出凸包点,并将凸包点用直线连接起来
ppoint:=cvGetSeqElem(hull,hull.total-1);//ppoint:pCvP
p1.x:=ppoint.x; &//p1:TCvP
p1.y:=ppoint.y;
for idx := 0 to hull.total-1 do
ppoint:=cvGetSeqElem(hull,idx);
tempoint.x:=ppoint.x;//tempoint:T
tempoint.y:=ppoint.y;
cvCircle(srcimage,tempoint,3,CV_RGB(255,255,255),3,8,0);
cvLine(srcimage,p1,tempoint,CV_RGB(255,255,255),3,8,0);
cvShowImage('画出凸包',srcimage);
cvZero(srcimage);
//还可以直接用cvDrawContours将找到的凸包画出来
cvDrawContours(srcimage, hull, CV_RGB(255,255,255), CV_RGB(255, 255, 255), 0, -1, 8,cvPoint(0,0));//-1表示将凸包内部填充,取值1表示连接轮廓,连接线的宽度为1,取值2,3以此类推
2、cvBoundingRect 寻找外部矩形
rect:=cvBoundingRect(ptseq,1);//rect:TCvRptseq:pCvS
tempoint.x:=rect.x;//tempoint,p1:T
tempoint.y:=rect.y;
p1.x:=rect.x+rect.
p1.y:=rect.y+rect.
cvRectangle(srcimage,tempoint,p1,CV_RGB(255,255,255),3,8,0);
cvShowImage('外部矩形',srcimage);
cvzero(srcimage);
3、cvMinAreaRect2 最小外接矩形
box2d:=cvCreateMemStorage ();//box2d: pCvMemS
box:=cvMinAreaRect2(ptseq,box2d);//box:TCvBox2D;ptseq:pCvS
cvBoxPoints(box,pt0,pt1,pt2,pt3);//cvBoxPoints为一个自定义函数,下面将贴出函数代码,pt0,pt1,pt2,pt3:Tcvpoint:
cvLine(srcimage,pt0,pt1,CV_RGB(255,255,255),3,8,0);
cvLine(srcimage,pt2,pt1,CV_RGB(255,255,255),3,8,0);
cvLine(srcimage,pt2,pt3,CV_RGB(255,255,255),3,8,0);
cvLine(srcimage,pt0,pt3,CV_RGB(255,255,255),3,8,0);
cvShowImage('最小外接矩形',srcimage);
cvzero(srcimage);
cvBoxPoints(MinAreaRectbox: TCvBox2D; var p0, p1, p2,p3: TCvPoint);//自定义函数的功能是根据TCvBox2D结构体中的参数,返回最小外接矩形的四个顶点
a:=sin(MinAreaRectbox.angle*3.)/2;
b:=cos(MinAreaRectbox.angle*3.)/2;
p0.x:= round(MinAreaRectbox.center.x - a*MinAreaRectbox.size.height - b*MinAreaRectbox.size.width);
p0.y:= round(MinAreaRectbox.center.y + b*MinAreaRectbox.size.height - a*MinAreaRectbox.size.width);
p1.x:= round(MinAreaRectbox.center.x + a*MinAreaRectbox.size.height - b*MinAreaRectbox.size.width);
p1.y:= round(MinAreaRectbox.center.y - b*MinAreaRectbox.size.height - a*MinAreaRectbox.size.width);
p2.x:= round(2*MinAreaRectbox.center.x - p0.x);
p2.y:= round(2*MinAreaRectbox.center.y - p0.y);
p3.x:= round(2*MinAreaRectbox.center.x - p1.x);
p3.y:= round(2*MinAreaRectbox.center.y - p1.y);
4、cvMinEnclosingCircle 最小外接圆
cvMinEnclosingCircle(ptseq,@center,@radius);//center:TCvPoint2D32f;radius:Sptseq:pCvS
tempoint.x:=round(center.x);//tempoint:TCV
tempoint.y:=round(center.y);
cvCircle(srcimage,tempoint,Round(radius),CV_RGB(255,255,255),3,8,0);
cvShowImage('最小外接圆',srcimage);
cvzero(srcimage);本帖子已过去太久远了,不再提供回复功能。工具类服务
编辑部专用服务
作者专用服务
求取多边形最小面积外接矩形的计算机算法
多边形的最小面积外接矩形是图形学、计算机学、地理信息系统等众多领域中经常涉及的一个问题,也是一个极其有用的工具,在实际生产和生活当中也经常会出现这个问题,但是它的求解过程是比较复杂和困难的。提出一种计算多边形最小面积外接矩形的计算机算法,并且对算法的效率和复杂度等进行分析,并通过多种算法实例来验证该算法的可行性和可靠性,充分验证新提出的算法的优越性。
作者单位:
四川大学软件学院,四川·成都610064
年,卷(期):
机标分类号:
在线出版日期:
本文读者也读过
相关检索词
万方数据知识服务平台--国家科技支撑计划资助项目(编号:2006BAH03B01)(C)北京万方数据股份有限公司
万方数据电子出版社 上传我的文档
 下载
 收藏
大学老师,计算机授课,城市规划授课,资料共享,共同学习,共同提高。
 下载此文档
正在努力加载中...
多边形最小外接矩形算法
下载积分:100
内容提示:多边形最小外接矩形算法
文档格式:PPT|
浏览次数:994|
上传日期: 04:52:19|
文档星级:
全文阅读已结束,如果下载本文需要使用
 100 积分
下载此文档
该用户还上传了这些文档
多边形最小外接矩形算法
官方公共微信

我要回帖

更多关于 多边形的最小外接矩形 的文章

 

随机推荐