OpenCV:旋转矩形(RotatedRect)

2023-11-19

RotatedRect类是OpenCV的基础类,用于创建旋转矩形,下面是它的构造函数,包含旋转中心点、尺寸大小和旋转角度。

构造函数1: 

RotatedRect(const Point2f& center, const Size2f& size, float angle);
center 旋转矩形的质心
size 旋转矩形的宽度和高度
angle 顺时针方向的旋转角度。当角度为0°,90°,180°,270°等时,矩形变为右上方的矩形

构造函数2: 

RotatedRect(const Point2f& point1, const Point2f& point2, const Point2f& point3);

通过这个构造函数也可以创建旋转矩形,只需要给出三个点,但是要指定三个点的顺序。

示例代码: 

#include <opencv2/opencv.hpp>
#include <iostream>

//宏定义
#define OPEN

int main()
{
	cv::Mat srcImage=cv::Mat(480,640,CV_8UC3,cv::Scalar(150,150,150));
#ifdef CLOSE
	cv::RotatedRect box(cv::Point(320, 240), cv::Size(200, 200), 30);
	cv::Point2f vertex[4];
	box.points(vertex);
#endif // CLOSE
#ifdef OPEN
	//随机数
	cv::RNG& rng = cv::theRNG();
	int count = rng.uniform(3,103);
	std::vector<cv::Point> points;
	for (int i=0;i<count;++i)
	{
		cv::Point point;
		point.x = rng.uniform(srcImage.cols / 4, srcImage.cols * 3 / 4);
		point.y = rng.uniform(srcImage.rows / 4, srcImage.rows * 3 / 4);
		points.push_back(point);
	}
	//获取点的最小包围旋转矩形
	cv::RotatedRect box=cv::minAreaRect(cv::Mat(points));
	cv::Point2f vertex[4];
	box.points(vertex);
	//绘制点
	for (int i=0;i<count;i++)
	{
		cv::circle(srcImage,points[i],3,cv::Scalar(rng.uniform(0,255), rng.uniform(0, 255), rng.uniform(0, 255)),cv::FILLED,8);
	}
#endif // OPEN
	//绘制旋转矩形
	for (int i = 0; i < 4; i++)
	{
		cv::line(srcImage, vertex[i], vertex[(i + 1) % 4], cv::Scalar(255, 100, 200),2,CV_AA);
	}
	std::cout << "center:" << box.center.x << "," << box.center.y << std::endl;
	std::cout << "Size:" << box.size.width << "," << box.size.height << std::endl;
	std::cout << "area:" << box.size.area()<<std::endl;
	std::cout << "angle:" << box.angle << std::endl;
	cv::imshow("srcImage", srcImage);
	cv::waitKey(0);
	cv::destroyAllWindows();
	return 0;
}

示例代码中用了条件编译,定义OPEN就是获取所有点的最小包围矩形,然后由最小包围矩形获取它的属性质心点、大小和角度;定义CLOSE就是直接使用质心点、大小和角度创建一个旋转矩形。

显示结果: 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV:旋转矩形(RotatedRect) 的相关文章

  • C# Math.Round()四舍五入、四舍六入五成双

    开发者为了实现小数点后 2 位的四舍五入 编写了如下代码 var num Math Round 12 125 2 代码非常的简单 开发者实际得到的结果是12 12 这与其所预期的四舍五入结果12 13相悖 其实产生这个结果的原因是由于Mat
  • 什么是 T-Kernel

    本文译至 http www t engine org what is t kernel 什么 T Kernel T Kernel 实时操作系统是由T Engine论坛开发的用以满足下一代普适计算环境设备性能要求的OS T Engine 是一
  • web designer设计器编译问题

    web designer设计器编译问题 下载地址 https github com xiaoai7904 web designer 开发工具 Visual Studio Code 执行npm install 初次安装编译过程中会出现 dll
  • word工具栏菜单栏隐藏打开的办法

    windows中打开 开始 运行 键入 winword a 然后 确定 即可恢复默认工具栏 重新打开文档
  • [基本功]辛普森悖论

    辛普森悖论是指什么现象 当人们尝试探究两种变量 比如新生录取率与性别 是否具有相关性时 会分别对之进行分组研究 然而 在分组比较中都占优势的一方 在总评中有时反而是失势的一方 上表中 商学院女生录取率为49 lt 男生录取率75 法学院女生
  • 我做了10年的测试,由衷的建议年轻人别入这行了

    两天前 有个做功能测试7年的同事被裁员了 这位老哥已经做到了团队中的骨干了 人又踏实 结果没想到刚刚踏入互联网 老龄化 大关 就被公司给无情优化了 现在他想找同类型的工作 薪资也一直被压 考虑转行转型的话 上升空间又窄 昨天还在指点江山 今
  • 【计算机视觉

    文章目录 一 PASCAL Context 二 DAVIS 2017 三 COCO Stuff Common Objects in COntext stuff 四 RefCOCO 五 CamVid Cambridge driving Lab
  • 7.Xaml Image控件

    1 运行图片 2 运行源码 a xaml源码
  • 2016视觉目标跟踪总结

    最近学习视觉目标跟踪算法 主要了解了几个主流的跟踪算法 kcf stc dsst 算法原理网上很多 这里就不再赘述 只对跟踪效果做了测试记录 Kcf 全名Kernelized Correlation Filters 其中hog特征用的fho
  • 嵌入式(条件变量和线程池)

    条件变量 应用场景 生产者消费者问题 是线程同步的一种手段 必要性 为了实现等待某个资源 让线程休眠 提高运行效率 int pthread cond wait pthread cond t restrict cond pthread mut
  • 开头为0的md5值总结

    s878926199a 0e545993274517709034328855841020 s155964671a 0e342768416822451524974117254469 s214587387a 0e8482404488305379
  • MATLAB曲线拟合灵敏度,用Matlab曲线拟合工具箱curve fitting曲线拟合,原来是这样的...

    在使用Matlab软件时 对于曲线拟合来说 有两种方式 其一是编写程序代码 其二是利用Curve fitting工具箱进行 本例通过一个多项式拟合的小试验 向您介绍利用curve fitting工具箱进行曲线拟合的一般步骤 工具 材料 Ma
  • 分块查找算法思路、示例和实现

    分块查找 索引表 22 44 74 数组 22 12 13 9 8 33 42 44 38 24 48 60 58 74 47 算法步骤 通过索引表线性查找确定在数组的哪一 块 通过数组里所在 块 的线性查找确定是否存在 在哪个位置 算法代
  • 2023西安交通大学软件工程915考研经验帖(初试+复试)

    目录 前言 一 初试准备 数学 英语 政治 专业课 总结 杂项 二 复试准备 1 笔试 数据库 操作系统 2 面试 总结 前言 本文仅记录我考研期间 2022 12初试 2023 3复试 的经验和感受 不具有普适性 请根据自身情况调整学习计
  • anaconda 删除环境_Anaconda:解决你装包的烦恼

    生物信息学的日常就是利用五花八门的工具和各种各样的数据打交道 很多时候需要在命令行安装软件或者包 我相信每一个生信人都碰到过安装软件或包时无法解决依赖的囧况 安装软件或者包 听起来是一件很简单的一件事 实际情况却不是如此 比如说编译时碰到系
  • android12适配机型,安卓12支持机型有哪些?安卓12系统为什么有的软件用不了?...

    安卓12系统终于发布了 虽说之前也体验了不少的测试版本了 这次正式版的发售还是很期待的 Android 12是Android历史上最大的设计变化 整体的界面也简洁了不少 不过也还存在不少的问题 比如指纹识别 人脸识别等 下面一起来看看安卓1
  • 网络通信TCP协议三次握手

    TCP是什么 TCP Transmission Control Protocol 传输控制协议 是一种面向连接 连接导向 的 可靠的 基于IP的传输层协议 TCP在IP报文的协议号是6 TCP是一个超级麻烦的协议 而它又是互联网的基础 也是
  • [Transformer]A Survey of Transformers-邱锡鹏

    复旦邱锡鹏组最新综述 A Survey of Transformers A Survey of Transformers Transformers已经在人工智能诸多领域 如NLP CV 声音处理等方面取得进展 也受到学术界和工业界的广泛关注

随机推荐

  • 第十四届蓝桥杯程序设计C++B组 (详细图解+保姆级注释)

    0 写在前面 本届CB组题目难度较往年整体提升了一些 考察知识点全面 题目质量很高 推荐备赛蓝桥杯或感兴趣的同学深入研究本套题 废话不多说 直接上干货 一 冶炼金属 签到题难度 考察数论分块知识or二分 有部分同学可能知道下取整的定义 但是
  • Mysql 时间戳转换为日期格式

    1 时间戳转日期 函数 FROM UNIXTIME select FROM UNIXTIME 1661997078 Y m d H i s 注意时间戳长度为 10 当时间戳长度大于10 要截取前十位 select substr 166199
  • python 再复习一下遍历目录下文件及子文件夹

    代表目前所在的目录 代表上一层目录 代表根目录 注意点的位置就是了 import os for image in os listdir os path join os getcwd 利润表 print image for root dirs
  • Vijava学习笔记之DataCenter(基础配置信息)

    vijava 代码 实体类 package com vmware pojo 数据中心 author zhb public class DataCenter extends Entity private String name 数据中心名称
  • ASP.NET Core 中间件详解及项目实战

    前言 在上篇文章主要介绍了DotNetCore项目状况 本篇文章是我们在开发自己的项目中实际使用的 比较贴合实际应用 算是对中间件的一个深入使用了 不是简单的Hello World 如果你觉得本篇文章对你有用的话 不妨点个 推荐 目录 中间
  • 使用ps命令查看进程的准确启动时间与启动后所消耗的时间

    使用ps命令查看nginx进程的准确启动时间与启动后到现在所消耗的时间 hadoop DSJ 4G 26 ps eo pid lstart etime cmd grep nginx 2204 Tue Nov 21 16 52 47 2017
  • Linux之iptables详解及tcpdump

    https www jianshu com p ed001ae61c58 原文有几处写的不明白的地方加以重整 可以参考这个人写的 感觉他明白的笔记透彻 https blog 51cto com 13677371 2094355 作者一共在内
  • K8S暴露服务的三种方式

    文章目录 暴露服务的三种方式 NodePort LoadBalane Ingress 内容参考 暴露服务的三种方式 NodePort 将服务的类型设置成NodePort 每个集群节点都会在节点上打 开 一 个端口 对于NodePort服务
  • mtb2_VizQL_Cleaning_Regx phone email_CRISP-DM_pdf table to text then to Excel

    Changing field attribution Let us look at the World Happiness Report We create the following worksheet by placing Start
  • 真题详解(哈希冲突)-软件设计(七十)

    真题详解 3FN 软件设计 六十九 https blog csdn net ke1ying article details 130548812 在以阶段划分的编译器 阶段的主要作用是分析构成程序的字符及由字符构造规则构成的符号是否复合程序语
  • 使用redis远程连接数据库

    使用redis远程连接数据库 1 首先下在redis 略 2 下载好后如图 3 输入远程数据库地址 error 错误信息提示的是 没有数据库权限 需要输入密码 4 输入密码后就可以进行操作了 5 因为是key value格式的 所以其实re
  • str计算机中代表什么,STR到底是待机还是休眠

    1 为什么需要待机 休眠 尽管电脑硬件运行速度越来越快 但操作系统的体积也在不断膨胀 使得电脑开 关机时 启动 关闭的程序越来越多 花费时间也越来越漫长 因此如何让电脑能够快速启动 一开机就进入Windows 就成为用户关心的问题 于是 随
  • (代码审计)zzcms前台SQL注入

    1 首先通过Seay源码审计工具发现存在admin ask phpSQL注入漏洞 2 根据提示定位到这段代码
  • Java-static关键词的引入

    Java static关键词的引入 栈 局部变量 堆 new出来的结构 对象 数组 方法区 类的加载信息 静态域 常量池 1 相关概念 静态的 公有的 不属于哪个对象 可以用来修饰 属性 方法 代码块 内部类 当static修饰属性时 按照
  • PMS及应用安装过程分析一

    本文阐释应用安装过程 对于开机过程应用包扫描过程不讲述 请参考网上其他文章 PMS类图 APP安装过程 1 PackageInstallerActivity创建 1 1 getPackageManager 1 2 processPackag
  • python如何检查一个对象是否是可迭代对象

    有的时候我们会记不住python里哪种数据类型是可以迭代的对象 这个时候我们可以使用collections里的Iterable来检查这个实例是否可以迭代 gt gt gt from collections import Iterable 载
  • 某东商品价格抓取

    今天做了一个京东商品价格的需求 整理一下 第一步 打开Chrome浏览器自带抓包工具 选择network选项卡 第二步 按下Ctrl F5 打开search 在里面输入价格 例如图中输入的是1318 00 然后回车就会出现包含价格的接口出现
  • 选频网络的原理

    请高手给我讲解下选频网络的原理 选频电路 2012 09 28 18 23 freechen3 分类 工程技术科学 浏览173次 提问者采纳 2012 09 30 00 07 选频网络是利用谐振原理实现 输入的信号含有各次频率分量 选频网络
  • js扩展jquery对象基元的开发与代码编写

    js扩展jquery对象基元的开发与代码编写 function window undefined var Core function var eventarr var OnPageLoad undefined 获取USER信息 var ge
  • OpenCV:旋转矩形(RotatedRect)

    RotatedRect类是OpenCV的基础类 用于创建旋转矩形 下面是它的构造函数 包含旋转中心点 尺寸大小和旋转角度 构造函数1 RotatedRect const Point2f center const Size2f size fl