【 C++ OpenCV画旋转矩形 并返回四个顶点 】
C++ OpenCV画旋转矩形 并返回四个顶点
- 函数 rectangle2
- 说明
- 代码
函数 rectangle2
说明
通过矩形中心点和角度,在图像上找到旋转矩形的四个角点
int rectangle2(Mat& src,vector& out_points, Point2f center, double angle, double w_length,double h_length, Scalar color, int thickness)
参数:
Mat& src 输入并输出图片
vector& out_points 得到四个点
Point2f center 矩形中心点
double angle 矩形角度
double w_length 矩形宽的一半
double h_length 矩形长的一半
Scalar color 颜色
int thickness 线宽 -1为填充**
代码
int rectangle2(Mat& src,vector<Point2f>& out_points, Point2f center, double angle, double w_length,double h_length, Scalar color, int thickness)Mat& src 输入并输出图片vector<Point2f>& out_points 得到四个点Point2f center 矩形中心点double angle 矩形角度double w_length 矩形宽的一半double h_length 矩形长的一半Scalar color 颜色int thickness 线宽 -1为填充**
int rectangle2(Mat& src,vector<Point2f>& out_points, Point2f center, double angle, double w_length,double h_length, Scalar color, int thickness)
{if (src.empty())return -1;angle = -angle;vector<Point2f> before_points(4),later_points(4);double cosA = cos(angle / (180.0 / CV_PI));double sinA = sin(angle / (180.0 / CV_PI));//左上,右上,右下,左下before_points[0] = Point(center.x - w_length, center.y - h_length);before_points[1] = Point(center.x + w_length, center.y - h_length);before_points[2] = Point(center.x + w_length, center.y + h_length);before_points[3] = Point(center.x - w_length, center.y + h_length);//带角度的矩形四角点later_points[0].x = (before_points[0].x - center.x) * cosA - (before_points[0].y - center.y) * sinA + center.x;later_points[0].y = (before_points[0].x - center.x) * sinA + (before_points[0].y - center.y) * cosA + center.y;later_points[1].x = (before_points[1].x - center.x) * cosA - (before_points[1].y - center.y) * sinA + center.x;later_points[1].y = (before_points[1].x - center.x) * sinA + (before_points[1].y - center.y) * cosA + center.y;later_points[2].x = (before_points[2].x - center.x) * cosA - (before_points[2].y - center.y) * sinA + center.x;later_points[2].y = (before_points[2].x - center.x) * sinA + (before_points[2].y - center.y) * cosA + center.y;later_points[3].x = (before_points[3].x - center.x) * cosA - (before_points[3].y - center.y) * sinA + center.x;later_points[3].y = (before_points[3].x - center.x) * sinA + (before_points[3].y - center.y) * cosA + center.y;int thicknes = thickness;if (thickness == -1)thicknes = 1;line(src, later_points[0], later_points[1], color, thicknes);line(src, later_points[1], later_points[2], color, thicknes);line(src, later_points[2], later_points[3], color, thicknes);line(src, later_points[3], later_points[0], color, thicknes);out_points = later_points;if (thickness == -1){Mat mask = Mat::zeros(src.size(), CV_8U);line(mask, later_points[0], later_points[1], Scalar(255), thicknes);line(mask, later_points[1], later_points[2], Scalar(255), thicknes);line(mask, later_points[2], later_points[3], Scalar(255), thicknes);line(mask, later_points[3], later_points[0], Scalar(255), thicknes);vector<vector<Point>> contours;vector<Vec4i> hierarchy;findContours(mask, contours, hierarchy, RETR_TREE, CHAIN_APPROX_NONE);drawContours(src, contours, 0, color, -1);}return 0;
}
【 C++ OpenCV画旋转矩形 并返回四个顶点 】相关推荐
- 【opencv】 旋转矩形
文章目录 1. 旋转矩形 2. 结果 1. 旋转矩形 //构建一个Mat(200*200) Mat image(200, 200, CV_8UC3, Scalar(0)); //设置一个旋转矩形3个参 ...
- opencv rect画旋转矩形_在opencv c中绘制旋转的矩形
既然你想要一个填充的矩形,你应该使用fillConvexPoly: // Include center point of your rectangle, size of your rectangle ...
- opencv画火车沿轨道运行-课程作业
opencv画火车沿轨道运行-课程作业 四个函数,一个循环 一. 轨道函数 二.定义可转弯小车的方法 三.定义角度函数 四.定义约束项 五.一个循环 以下附上总代码 以下效果图 写本次博客的目的主要是 ...
- [CV] Rotated IoU 计算旋转矩形之间的重叠面积
[CV] Rotated IoU 计算旋转矩形之间的重叠面积 文章目录 [CV] Rotated IoU 计算旋转矩形之间的重叠面积 简介 旋转包围盒的编码方式 矢量的旋转公式 包围盒转化为角点 代码 ...
- 【opencv】轮廓特征(质心,面积,周长,近似轮廓,凸包,凸度,边界矩形,直角矩形,旋转矩形,最小闭合圈,拟合椭圆、直线)
4_9_2_轮廓特征 - OpenCV中文官方文档 找到轮廓的不同特征,例如面积,周长,质心,边界框等. 1. 特征矩 特征矩可以帮助您计算一些特征,例如物体的质心,物体的面积等.请查看特征矩上的维基 ...
- opencv画直线,矩形
opencv 画直线要画一条线,你只需要告诉函数这条线的起点和终点.我们下面会画一条从左上方到右下角的蓝色线段. import numpy as np import cv2# Create a bla ...
- OpenCV旋转矩形RotatedRect的Points函数遇到的问题
学更好的别人, 做更好的自己. --<微卡智享> 本文长度为2722字,预计阅读8分钟 前言 原来的文章<C++ OpenCV透视变换改进---直线拟合的应用>,通过Rotat ...
- python识别图像中绿色的部分_[OpenCV-Python] OpenCV 中的图像处理 部分 IV (四)
部分 IV OpenCV 中的图像处理 21 OpenCV 中的轮廓 21.1 初识轮廓 目标 • 理解什么是轮廓 • 学习找轮廓,绘制轮廓等 • 函数:cv2.findContours(),cv2. ...
- python opencv最小外接矩形_Opencv绘制最小外接矩形、最小外接圆
Opencv中求点集的最小外结矩使用方法minAreaRect,求点集的最小外接圆使用方法minEnclosingCircle. minAreaRect方法原型: RotatedRect minAre ...
- 使用opencv截取旋转框目标
使用opencv截取旋转框目标 1.第一种方法 2.第二种方法 3.两种方法的简单对比 4.opencv 最小面积矩形返回角度的理解 4.1.version4.2之前 4.2.version4.2之后 ...
最新文章
- 你有哪些deep learning(rnn、cnn)调参的经验?
- Flutter入门进阶之旅(九)StatelessWidget StatefullWidget
- 常见文件、目录、路径操作函数
- linux中下载文件的命令
- 汇编语言中可以定义变量吗?怎么定义?有局部变量和全局变量之分吗?作用域是什么?
- SweetAlert详解
- python循环顶帖_python中的循环
- Go、Java、C++,下一代测序工具开发谁更强?
- 高通平台printk输出log到串口
- 博文视点Open Party ——漏洞分析
- ShenNiu.MVC管理系统
- WebService 服务 转
- php动态万年历模块,php如何实现万年历的开发(每日一课真是非常有效率)
- HanLP Demo(学习笔记)
- java weka 分类_Weka开发[48]——用Weka文本分类
- 360前端校招2019笔试编程题
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxcccccccccccc
- Web前端之HTML超文本标记语言
- 排序算法 快速排序【详细步骤图解】
- K-means聚类、KNN算法原理
热门文章
- 魔兽争霸无法在这个计算机,win10系统魔兽争霸按F1无法选中自己的英雄的图文办法...
- 99,36岁老码农现身说法
- 计算机职业规划论文参考文献,职业生涯规划的参考文献
- 人工智能成热门 苹果谷歌等科技公司竞相涌入改变神经科学研究
- LabVIEW视觉功能模块下载
- 计算机作文英语初中,初中英语常见的作文类型及应对技巧
- 保研面试-中英文问题及回答总结
- 什么是“海恩法则”?
- 刑法285条非法获取计算机信息数据,刑法285条量刑标准,提供侵入计算机系统工具罪,并被拘役...
- 似幻亦真 教你踏足网络仿真的云外之境