当前位置: 首页 > news >正文

合肥建站软件ui设计的作用

合肥建站软件,ui设计的作用,网站建设需要什么程序员,在线教育网站建设公司opencv 之 外接多边形(矩形、圆、三角形、椭圆、多边形)使用详解 本文主要讲述opencv中的外接多边形的使用: 多边形近似外接矩形、最小外接矩形最小外接圆外接三角形椭圆拟合凸包 将重点讲述最小外接矩形的使用 1. API介绍 #多边形近似 v…

opencv 之 外接多边形(矩形、圆、三角形、椭圆、多边形)使用详解

  • 本文主要讲述opencv中的外接多边形的使用:

    • 多边形近似
    • 外接矩形、最小外接矩形
    • 最小外接圆
    • 外接三角形
    • 椭圆拟合
    • 凸包
  • 将重点讲述最小外接矩形的使用

1. API介绍

#多边形近似
void cv::approxPolyDP(InputArray 	curve,OutputArray 	approxCurve,double 	epsilon,bool 	closed )		
Python:
cv.approxPolyDP(curve, epsilon, closed[, approxCurve]	) ->	approxCurve#计算点到多边形的距离或者判断是否在多边形内部
double cv::pointPolygonTest	(InputArray 	contour,Point2f 	pt,bool 	measureDist )		
Python:
cv.pointPolygonTest(contour, pt, measureDist) ->	retval#外接矩形
Rect cv::boundingRect(InputArray 	array)	Python:
cv.boundingRect(array) ->	retval#最小外接矩形
RotatedRect cv::minAreaRect	(InputArray 	points)	
Python:
cv.minAreaRect(	points) ->	retval#求矩形交集
int cv::rotatedRectangleIntersection(const RotatedRect & 	rect1,const RotatedRect & 	rect2,OutputArray 	intersectingRegion )		
Python:
cv.rotatedRectangleIntersection(rect1, rect2[, intersectingRegion]	) ->	retval, intersectingRegion#最小外接圆
void cv::minEnclosingCircle	(InputArray 	points,Point2f & 	center,float & 	radius )		
Python:
cv.minEnclosingCircle(points) ->	center, radius#最小外接三角形
double cv::minEnclosingTriangle	(InputArray 	points,OutputArray 	triangle)		
Python:
cv.minEnclosingTriangle(points[, triangle]	) ->	retval, triangle#椭圆拟合
void cv::ellipse(InputOutputArray 	img,Point 	center,Size 	axes,double 	angle,double 	startAngle,double 	endAngle,const Scalar & 	color,int 	thickness = 1,int 	lineType = LINE_8,int 	shift = 0 )		
Python:
cv.ellipse(	img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]]	) ->	img
cv.ellipse(	img, box, color[, thickness[, lineType]]	) ->	img

2. 例程

  • 给一个opencv官方的例程:
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
using namespace cv;
using namespace std;
static void help()
{cout << "This program demonstrates finding the minimum enclosing box, triangle or circle of a set\n"<< "of points using functions: minAreaRect() minEnclosingTriangle() minEnclosingCircle().\n"<< "Random points are generated and then enclosed.\n\n"<< "Press ESC, 'q' or 'Q' to exit and any other key to regenerate the set of points.\n\n";
}
int main(int /*argc*/, char** /*argv*/)
{help();Mat img(500, 500, CV_8UC3, Scalar::all(0));RNG& rng = theRNG();for (;;){int i, count = rng.uniform(1, 101);vector<Point> points;// Generate a random set of pointsfor (i = 0; i < count; i++){Point pt;pt.x = rng.uniform(img.cols / 4, img.cols * 3 / 4);pt.y = rng.uniform(img.rows / 4, img.rows * 3 / 4);points.push_back(pt);}// Find the minimum area enclosing bounding boxPoint2f vtx[4];RotatedRect box = minAreaRect(points);box.points(vtx);// Find the minimum area enclosing trianglevector<Point2f> triangle;minEnclosingTriangle(points, triangle);// Find the minimum area enclosing circlePoint2f center;float radius = 0;minEnclosingCircle(points, center, radius);img = Scalar::all(0);// Draw the pointsfor (i = 0; i < count; i++)circle(img, points[i], 3, Scalar(0, 0, 255), FILLED, LINE_AA);// Draw the bounding boxfor (i = 0; i < 4; i++)line(img, vtx[i], vtx[(i + 1) % 4], Scalar(0, 255, 0), 1, LINE_AA);//绘制外接矩形rectangle(img, box.boundingRect(), cv::Scalar(10, 100, 20), 2);//也可以:/*cv::Rect _rect = boundingRect(points);rectangle(img, _rect, cv::Scalar(10, 100, 20), 2);*/// Draw the trianglefor (i = 0; i < 3; i++)line(img, triangle[i], triangle[(i + 1) % 3], Scalar(255, 255, 0), 1, LINE_AA);// Draw the circlecircle(img, center, cvRound(radius), Scalar(0, 255, 255), 1, LINE_AA);imshow("Rectangle, triangle & circle", img);char key = (char)waitKey();if (key == 27 || key == 'q' || key == 'Q') // 'ESC'break;}return 0;
}
  • 过程图像如下:
    在这里插入图片描述
  • 椭圆拟合一般用于轮廓提取之后:

//获取拟合椭圆的外包围矩形  
cv::RotatedRect rotate_rect = cv::fitEllipse(points);  
//绘制拟合椭圆  
cv::ellipse(image, rotate_rect, cv::Scalar(0, 255, 255), 2, 8);  

在这里插入图片描述

  • 凸包绘制
 vector<Point> hull;convexHull(points, hull, true);img = Scalar::all(0);for( i = 0; i < count; i++ )circle(img, points[i], 3, Scalar(0, 0, 255), FILLED, LINE_AA);polylines(img, hull, true, Scalar(0, 255, 0), 1, LINE_AA);imshow("hull", img);#多边形填充绘制:polylines(img, hull, true, Scalar(0, 255, 0), -1, LINE_AA);
  • 计算两个旋转矩形交集:
vector<Point2f> intersectingRegion;
rotatedRectangleIntersection(rect1, rect2, intersectingRegion);

在这里插入图片描述

3. 关于最小外接矩形

  • C++版的最小外接矩形使用:
RotatedRect rect = minAreaRect(points);
float angle = rect.
box.points(vtx);

其接口返回值可读取如下:其中,其角度指的是width与物理坐标系y轴正方向逆时针所成的夹角
在这里插入图片描述
赋值时也可以读出如下数据:中心、角度、尺寸大小、外接矩形
在这里插入图片描述

  • 画图详解一下吧:
    在这里插入图片描述
  • 想要看真实的效果图的话,可以参考:biubiubiu~
    在这里插入图片描述
  • 它也可以用于:
    在这里插入图片描述
  • python版本的最小外接矩形:
 _rect = cv2.minAreaRect(conts_new[i])(x, y), (w, h), ang = _rectbox = cv2.boxPoints(_rect)# 标准化坐标到整数box = np.int32(box)cv2.drawContours(mask_c3, [box], 0, (int(bgr[0]), int(bgr[1]), int(bgr[2])),2)
  • 还有一些想法,后边再补充吧
http://www.yayakq.cn/news/213336/

相关文章:

  • 主营网站建设会计记账暴走漫画网站建设中模板
  • 北京网站推广价格什么网站能买建设摩托车
  • 外贸局合并到哪个局网站网站怎么优化关键词排名
  • 网站绑定别名好吗教育集团网站建设的目的
  • 有什么值得做的网站北京口碑最好的教育机构
  • 百度推广建设网站是不是合发网站建设管理需要招聘什么人才
  • 程序员自己做网站怎么能来钱郑州互联网公司排行榜
  • 电子书籍网站开发社交软件开发费用
  • 昆山做网站的kamese顺义区网站建设
  • 甘肃省和城乡建设厅网站宁波建设集团股份有限公司官网
  • 广西 南宁 微信微网站开发东莞市交易中心网
  • 怎么建立一个网站的快捷方式中文网站模板免费下载
  • 网站建设方案书下载全渠道分销零售平台
  • 科普网站建设经验山西并州建设有限公司
  • 旅游电网站建设目标二手商城网站建设论文
  • 网站开发报价单 excelwordpress固定连接出错
  • 英文网站域名注册网站服务器大小
  • dw学校网站制作教程大气宽屏的网站
  • 站长统计ios公司网站开发的工作内容
  • 企业网站设计说明做微信推送网站
  • 做公司月刊网站wordpress看图插件
  • 哪个网站专业做商铺抖音里做我女朋友网站
  • 网站建设与运营 就业天眼查 企业查询
  • 专做律所网站大良网站建设基本流程
  • 作品展示网站 源码南昌专业做网站公司
  • 公司网站建设找谁北京互联网公司网站建设
  • 电子商务网站建设 iis专业网站建设兴田德润
  • 建设医药网站前要做什么审核什么是网络营销系统
  • 网站下载视频软件兖州住房与城乡建设局网站
  • 网站开发学习路线沈阳网站建设公司哪个好