学习OpenCV:rotatedRectangleIntersection计算两个旋转矩形的交集面积

2023-11-06

 如图所示,计算两个旋转矩形相交重合区域的顶点,最多返回8个顶点。通过contourArea可返回该顶点集合的面积。

void DrawPointSet(Mat& imgInoutput, vector<Point> vecPoint, int radius, const Scalar& color, int thickness = 1, int lineType = LINE_8);

void DrawRotatedRect(Mat& imgInoutput, RotatedRect rectInput, Scalar color, int thickness = 1, int lineType = LINE_8);

void DrawRotatedRect(Mat& imgInoutput, RotatedRect rectInput, Scalar color, int thickness, int lineType)
{
	Point2f* vertices = new cv::Point2f[4];
	rectInput.points(vertices);
	for (int j = 0; j < 4; j++)
		line(imgInoutput, vertices[j], vertices[(j + 1) % 4], color, thickness, lineType);
}

void DrawPointSet(Mat& imgInoutput, vector<Point> vecPoint, int radius, const Scalar& color, int thickness, int lineType)
{
	for (size_t i = 0; i < vecPoint.size(); i++)
		circle(imgInoutput, vecPoint[i], radius, color, thickness, lineType);
}

int main()
{
	Mat imgSrc = Mat::zeros(Size(500,500), CV_8UC3);
	RotatedRect rect1;
	rect1.center = Point2f(200,200);
	rect1.size = Size(100,100);
	rect1.angle = 3;
	RotatedRect rect2;
	rect2.center = Point2f(210, 180);
	rect2.size = Size(100, 100);
	rect2.angle = 10;
	vector<Point2f> intersectingRegion;
	rotatedRectangleIntersection(rect1, rect2, intersectingRegion);
	DrawRotatedRect(imgSrc, rect1, Scalar(255, 0, 0));
	DrawRotatedRect(imgSrc, rect2, Scalar(0, 0, 255));
	if (intersectingRegion.empty())
		return 0;
	DrawPointSet(imgSrc, vector<Point>(intersectingRegion.begin(), intersectingRegion.end()), 3, Scalar(0, 255, 0));
	double dbArea = contourArea(intersectingRegion);
}

 

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

学习OpenCV:rotatedRectangleIntersection计算两个旋转矩形的交集面积 的相关文章

  • js:使用正则将地理位置脱敏。5个字以内,保留第一个字和最后两个字,其余用*替代;6到9个字则保留最后五个字,其余用*替代;10个字以上则最后五个字的前面四个字代替为*

    需求背景 使用正则将地理位置脱敏 5个字以内 保留第一个字和最后两个字 其余用 替代 6到9个字则保留最后五个字 其余用 替代 10个字以上则最后五个字的前面四个字代替为 解决方法 enAdderssFun text if text len
  • 基于servlet+jsp的在线考试管理系统

    1 1 基于servlet jsp的在线考试管理系统 1 2 程序 编程语言 java 前台 jsp 开发工具 IDEA2020 JDK1 8 mysql5 7 tomat 8 管理账号 admin 密码 123456 请求localhos
  • JSX 的基本使用

    1 JSX 简介 通过上一篇博客的 1 个小应用 我们能体会到 和 Vue 相比代 用 React 写一个这么小的应用比较麻烦 而且代码比较混乱 接触过 Vue 的开发者应该知道 Vue 有两个构建版本 如果单独使用非完整版其实和上述用 R
  • Flask在Windows环境下的部署

    背景 由于目前在用的Flask项目涉及到一部分依赖Windows的处理 还无法迁移到linux平台 那么在windows环境下 要怎么部署呢 思路 根据Flask官网介绍 由于Flask内置的服务器性能不佳 推荐的主要的部署方式有如下几种
  • 若依系统(微服务版本)部署流程

    若依系统 微服务版本 部署流程 此处做最基本的部署 后续需要可根据系统需要添加功能 微服务版本源码地址 https gitee com y project RuoYi Cloud 若依系统官网 http www ruoyi vip 系统架构
  • Android Studio Gradle插件版本与Gradle 版本对应关系

    工作中 新接手同事维护老项目 因升级 Android Gradle 插件版本与Gradle 版本不匹配 致使无法构建打包 特此进行了梳理 目录 1 Android Gradle插件版本 与 Gradle版本关系 1 1 修改Gradle插件
  • 疯壳-鸿蒙OS-总线驱动开发及实现之SPI

    总线驱动及实现之SPI 疯壳 出品 SPI接口说明 鸿蒙OS中关于spi接口的定义在源码目录 drivers hdf frameworks include platform drivers hdf frameworks support pl
  • Python3-类型标注支持

    typing为Python的一个标注库 此默认支持PEP 484和PEP 526指定的类型提示 最基本的支持由Any Union Tuple Callable TypeVar和Generic类型组成 有关完整的规范 请参阅PEP 484 有
  • 本人亲自整理的极客时间设计模式之美的硬核笔记

    由于笔记内容过多 我把它放到语雀上了 点击我 以下内容是为了让搜索引擎 检测到这篇文章 要阅读体验 请点击上面的连接 点击我 去我的语雀看 对了 我看到语雀那里有投诉的功能 请读者不要去点 程序员不要为难程序员 你去点了 就再也无法看到我的
  • 分布式存储Ceph介绍及搭建

    一 存储的类型 1 单机存储设备 DAS 直接附加存储 是直接接到计算机的主板总线上去的存储 IDE SATA SCSI SAS USB 接口的磁盘 所谓接口就是一种存储设备驱动下的磁盘设备 提供块级别的存储 NAS 网络附加存储 是通过网
  • Scratch2.0在线注册用户并使用帮助

    教学目标 1 在Scratch2 0中注册一个账号 2 登录后 进行再线学习 3 利用帮助进行自主学习 了解Scratch作品的创作过程 教学过程 一 注册用户 第一步 https scratch mit edu 打开官网 点 加入Scra
  • cuda编程学习2——add

    cudaMalloc 分配的指针有使用限制 设备指针的使用限制总结如下 1 可以将其传递给在设备上执行的函数 2 可以在设备代码中使用其进行内存的读写操作 3 可以将其传递给在主机上执行的函数 4 不能在主机代码中使用其进行内存的读写操作
  • Rust Diesel SQLite Windows

    问题描述 windos下想用Rocket使用SQLite3 自带案例 example todo 提示链接不到sqlite3 lib 原因分析 找到两个相关的issues https github com SergioBenitez Rock
  • 配置JAVA_HOME环境变量

    打开到环境变量 1 右击此电脑选择属性 2 选择高级系统设置 3 选择环境变量 配置JAVA HOME环境变量 1 新建系统变量 1 在系统变量中找到Path 如果没有就新建一个 然后新建两个变量
  • 第一章:VUE3学习(一)---Nodejs安装以及环境变量配置

    Nodejs安装以及环境变量配置 1 下载Nodejs 1 1最新版下载 1 2历史版本下载 2 安装 3 验证 4 环境变量配置 5 npm下载设置 6 测试 6 设置国内镜像提高下载速度 1 下载Nodejs 1 1最新版下载 直接官网
  • 用QT写一个类似的安装向导界面

    本文目录 功能描述 功能实现 框架 功能1 点击同意协议 才能进行下一步 功能2 选中指定路径的文件夹 并遍历该文件夹下所有的文件 功能3 设置进度条 功能4 两种激活方式 完整代码 功能描述 1 点击同意协议 才能进行下一步 2 选择一个
  • 2020软件测试学习自学路线分享,附完整资料,绝对有用哟

    2020软件测试学习路线图 内附自学路线 视频 工具经验 面试篇 划重点 资源链接 黑马程序员社区 想毕业后做测试相关的工作的 找学习资源找的头大 还好终于找到这么优质的可以系统地学习测试知识的途径 想学测试的小伙伴看看 真的可以跟着一步步

随机推荐

  • 误差向量幅度(EVM)

    转自 http blog sina com cn s blog 6c46cb860100otm3 html 误差向量幅度 EVM 误差向量 包括幅度和相位的矢量 是在一个给定时刻理想无误差基准信号与实际发射信号的向量差 Error Vect
  • 微信小程序添加插件腾讯位置服务路线规划,找不着的solution

    第一个 找到网页点击添加插件 提示类别不一样pass 第二个 在后台管理添加插件 提示找不着 pass 这两方法都不行 解决方法是 开发者后台登陆后 右上角服务 进入微信服务市场 选择开发者资源 然后选择插件 搜索腾讯位置服务路线规划 亲测
  • 3045 Lcm与Gcd构造

    已知 gcd a b n lcm a b m 求min a b 是多少 通过gcd的了解我们可以知道 两个数a k1 n以及b k2 n并且gcd k1 k2 1 ab n m m a b n ab k1 k2 n n 于是可以得到 m k
  • Yii Framework 开发教程(44) Zii组件-Resizable示例

    CJuiResizable可以使包含在其中的UI组件支持缩放功能 它封装了 JUI Resizable插件 CJuiResizable基本使用方法如下 php view plain copy print
  • Anaconda Prompt的用法

    Windows 开始菜单 打开Anaconda Prompt 这个窗口和cmd窗口一样的 用命令 conda list 查看已安装的包 从这些库中我们可以发现NumPy Matplotlib Pandas 说明已经安装成功了 下一步可以测试
  • ACM入门攻略(紫书入门,不间断更新)

    声明 本文仅供参考 并且假定读者已经可以熟练运用C语言及其相关知识 大神请走开 谢谢配合 目录 一 ACM入门的相关准备 书籍 OJ 编程语言 常用网站或工具 二 入门阶段的学习路线及其策略 全文以紫书为例 1 紫书第五章语言篇写题策略 2
  • JS之对象-对象声明及静态方法

    声明对象 1 原型实例化 声明对象的方式1 原型实例化 let obj1 new Object obj1 name obj1 张三 obj1 getName function return this name console log obj
  • 八十七.查找与排序习题总结(二)

    查找与排序习题总结 一 查找与排序习题总结 三 题一 调整数组顺序 奇数在左 偶数在右 调整数组的顺序使奇数位于偶数前面 输入一个整数数组 调整数组中数字的顺序使得所有奇数位于数组的前半部分 所有偶数位于数组的后半部分 要求时间复杂度为O
  • Rot.js 随机地牢,迷宫地图生成

    js 插件随机地牢 迷宫地图生成 插件git https github com ondras rot js tree master dist 使用 1 我们的游戏是在网页内进行的 一个基本的 HTML 文件就足够了
  • SPDK块设备

    SPDK视角每个App由多个子系统 subsystem 构成 同时每个子系统又包含多个模块 module 子系统和模块的注入都是可插拔的 通过相关的宏定义声明集成到SPDK组件容器里 其中子系统的注入可通过声明SPDK SUBSYSTEM
  • MMDeploy部署实战系列【第一章】:Docker,Nvidia-docker安装

    MMDeploy部署实战系列 第一章 Docker Nvidia docker安装 这个系列是一个随笔 是我走过的一些路 有些地方可能不太完善 如果有那个地方没看懂 评论区问就可以 我给补充 版权声明 本文为博主原创文章 遵循 CC 4 0
  • Type cannot use 'try' with exceptions disabled

    cannot use throw with exceptions disabled 在为 DragonBonesCPP refactoring 的 cocos2d x 3 2 demo 增加 Android 编译时 NDK 报了一个编译错误
  • 数据结构刷题训练营1

    开启蓝桥杯备战计划 每日练习算法一题 坚持下去 想必下一年的蓝桥杯将会有你 笔者是在力扣上面进行的刷题 由于是第一次刷题 找到的题目也不咋样 所以 就凑合凑合吧 笔者打算从数据结构开始刷起 毕竟现在刚刚接触到数据结构 在力扣上找到的刷题链接
  • 计算机方面英语文献翻译(学习记录更新中)

    在万方找的英文文献摘要 自己翻译的 1 考虑到时间序列数据的高维度和复杂性给数据挖掘带来的困难以及聚类分析在时间序列数据挖掘领域中的重要性 本文总结了国内外时间序列数据聚类的研究现状 时间序列聚类可以被分为全时间序列聚类和子序列聚类 并且可
  • Python流体动力学共形映射库埃特式流

    流体动力学简述 在物理学和工程学中 流体动力学是流体力学的一个分支学科 它描述了流体 液体和气体的流动 它有几个子学科 包括空气动力学 研究空气和其他运动中的气体 和流体动力学 研究运动中的液体 流体动力学具有广泛的应用 包括计算飞机上的力
  • 携程酒店数据爬取2020.5

    携程酒店数据爬取2020 5 1 开题 目前网上有好多爬取携程网站的教程 大多数通过xpath beautifulsoup 正则来解析网页的源代码 然后我这个菜b贪方便 直接copy源码的xpath paste在xpath helper改改
  • Kaggle手势符号识别项目实战

    项目数据集地址 https www kaggle com datasets ardamavi sign language digits dataset 观察到数据集已经做过预先的整理 十分工整 txt文件中类别标记清晰详细 项目文件如上图所
  • 小程序+单页+需要服务器,小程序单页设计

    小程序单页设计 内容精选 换一换 I O分析以存储块设备为分析对象 分析得出块设备的I O操作次数 I O数据大小 I O队列深度 I O操作时延等性能数据 并关联到造成这些I O性能数据的具体I O操作事件 进程 线程 调用栈 应用层I
  • iOS自动化布局-AutoLayout约束优先级

    约束的优先级 AutoLayout添加的约束中也有优先级 Priority 优先级的数值1 1000 分为两种情况 一种情况是我们经常添加的各种约束 默认值1000 最大值 优先执行 条件允许的话系统会自动满足我们的约束需求 第二种就是固有
  • 学习OpenCV:rotatedRectangleIntersection计算两个旋转矩形的交集面积

    如图所示 计算两个旋转矩形相交重合区域的顶点 最多返回8个顶点 通过contourArea可返回该顶点集合的面积 void DrawPointSet Mat imgInoutput vector