Cvbox2D 角度 长宽正解
文档转自:https://www.cnblogs.com/panxiaochun/p/5478555.html
cvBox2D和RotatedRect中返回的角度angle详解
本文为作者原创,未经允许不得转载;
原文由作者发表在博客园: http://www.cnblogs.com/panxiaochun/p/5478555.html
关于cvBox2D和RotatedRect中返回的角度angle的opencv官方说明文档里面没有给出太多到信息,其中文档是这样说的:
图1:opencv关于cvBox2D的说明文档截图
在水平轴和第一条边之间的角度。(好简洁,但是真的并没有太明确)
在网上也有关于cvBox2D和RotatedRect的角度angle的说明,但是查看了一下,不对,或者不完全对。其中有两篇:http://blog.csdn.net/mine1024/article/details/6044856和
http://blog.csdn.net/a553654745/article/details/45743063,其中说到了,x轴逆时针碰到的第一条边为width(实际中width可能比Height还大,实际使用中确实发现了width比height还大的情况),下面选取两篇文章中的图来说明一下:
图2:网友关于旋转角的说明图
这幅图是网上流传最多的,但是只有一篇原创,其它都是复制粘贴,有的甚至只是放了一幅图,这篇博文只告诉我们一个有用的东西,x轴逆时针碰到的第一条边为width,并与这条边形成的角度就是cvBox2D和RotatedRect的角度angle,但是这篇博文忽略了,一个事实就是opencv的坐标原点是左上角,所以这个坐标系是错的。下面的图就比较完整的说明了cvBox2D和RotatedRect的角度的来源:
图3:网友关于opencv旋转角的修正图
这个图是很好说明角度的选取的来源,但是我本人觉得有点错误所以,修正了一下:
图4:我个人关于cvBox2D和RotatedRect里面的角度angle的说明图
这是本人修改过的图,下面进入论证,这里用了一幅图,里面有两个旋转的矩形,其中由于旋转的角度不一样,所以opencv找出来的cvBox2D里面的width有可能会比height大
图5:测试图片里面的两个矩形图
其中第一个由于它是逆时针旋转的,所以,x轴会先碰到顶部的直线L1,第二个矩形是顺时针旋转的,所以x轴会先碰到左边的直线L2,很明显L2会比L1大,其中L1也会比它左边的直线小:
图6:第一个矩形的检测结果图
第一个矩形的角度只有-22度(再次证明不是书上说的弧度)其中width为130,比height小。
图7:第二个矩形的检测结果图
第二个矩形的角度为-77度,width为234,比height109大,其中还比第一个矩形的width大。论证成立。
其中角度的正负,在网上很多都说逆时针为正,顺时为负,这里逆时针为负,顺时针为正,主要原因,我个人觉得是和坐标系有关,因为网上说的角度的旋转的坐标系是以图2的坐标系作为参考,而opencv里面是以图3的作为参考,所以在x轴和y轴的象限里的角度为正的原则吧,opencv里逆时针为负。
图8:论证结果详解图
在opencv的源码的\modules\ imgproc\src下的rot calipers.cpp里可以找到minareaRect()函数的源码,该函数会返回RotatedRect,在c#版会返回CvBox2D,两个是一样的,在里面找到了angle不是弧度最佳证明:
box.angle = (float)(box.angle*180/CV_PI);
可以看出返回的RotatedRect的angle不是弧度单位,刚开始angle是弧度的,后来经过转换后再输出了,可能前几个版本里面的angle是弧度的后来改为度了。
https://www.vsien.cn/
Cvbox2D 角度 长宽正解相关推荐
- 高德地图, 根据长/宽/角度 绘制矩形 polygon
created(){map.off('click', this.drawPolygon)},methods: {// 点击地图绘制矩形polygondrawPolygon(e) {// 地图点击坐标c ...
- 学计算机的能做近视手术吗,长时间盯着电脑,还能做近视手术吗?医生给你正解...
原标题:长时间盯着电脑,还能做近视手术吗?医生给你正解 说实话,在这个数字化时代,有非常非常多的工作需要面对着电脑进行.即使不用对着电脑,手机也是离不开的工作沟通工具.好多想做近视手术的朋友回头一看自 ...
- python长表转换宽表_如何用Python来处理数据表的长宽转换(图文详解)
不多说,直接上干货! 很多地方都需用到这个知识点,比如Tableau里. 通常可以采取如python 和 r来作为数据处理的前期. 数据长宽转换是很常用的需求,特别是当是从Excel中导入的汇总表 ...
- 射灯安装方法图解_家居射灯怎么选?第三代宜美SMD射灯给你正解
前段时间,刚把自己的房子完成硬装,在灯具选择的过程中,家人的意见就不太统一.其父母觉得选灯只要够亮就行,而媳妇觉得选灯选贵的才行.到底谁的选灯方法好呢?其实家人们的建议并不是完全不对,灯够亮只是其中一 ...
- linux的dns怎么配置正向区域文件,Linux学习之路之DNS的配置文件和正解区域文件、反解区域文件...
DNS正解区域文件 在DNS中,我们知道有域和区域的概念,域的英文名称是domain,它是一种逻辑概念:而区域英文全称zone,它是一种物理概念.且zone分为正解区域和反解区域 正解区域:提供正向解 ...
- 2021.8.11【提高B组模拟3】T1 积木(乱糊暴搜)(正解:状压dp)
积木 题目大意 输入样例 3 8 7 6 3 9 4 1 10 5 输出样例 18 题目数据 解题思路 暴搜就没什么好讲的了 原本以为只有40,AC了就离谱 (数据真水) 正文:状压dp 前提:我这个 ...
- P1401 城市(30分,正解网络流)
题目描述 N(2<=n<=200)个城市,M(1<=m<=40000)条无向边,你要找T(1<=T<=200)条从城市1到城市N的路,使得最长的边的长度最小,边不能 ...
- java图像处理002---JAVA图片压缩_图片缩放_图片按照比例缩放_图片指定长宽缩放_Java使用google开源工具Thumbnailator实现图片压缩
JAVA技术交流QQ群:170933152 前言 作为靠谱的java服务端程序员,图片这个事情一直是个头疼的事情. 现在很多网站上,都有上传图片这个功能,而图片对于现在的很多手机来说,拍摄出来的都是高 ...
- hwd分别是长宽高_长宽高是什么意思
1. 注意:法国及加拿大中转货的长宽高如超过1.2米的价格另议. Note: transit cargo to France and Canada more than 1.2 metres the p ...
最新文章
- AI一分钟|阿里被曝拟参与旷视新一轮6亿美元融资;MIT设计自动力机器人,与人类卵细胞大小无异...
- (传送门) IDEA 控制台输出JVM的GC日志
- Cento7 PHP5.6 升级 PHP7.0.0
- react中使用构建缓存_使用React和Netlify从头开始构建电子商务网站
- JDK源码解析之 java.lang.Class
- vi编辑器的学习使用(二十)
- C语言控制台窗口界面编程:printf格式化显示-修改字符字体、颜色和背景
- innodb数据备份语句
- shell脚本特殊变量与变量子串相关知识
- 刷题upupup【Java中Queue、Stack、Heap用法总结】
- ZigBee与Android的智能家居控制系统设计
- 带你实战Android深色模式,深入原理剖析
- 多媒体计算机中的扬声器指的是音箱和,多媒体音箱还以为只是个喇叭,原来这么多名堂...
- 构造伽罗华域GF(2^m)的方法
- linux 应用层gpio中断_树莓派官方自带gpio中断驱动bcm2708_gpio.c原理分析 linux 中断架构 中断子系统...
- [进程通信] 进程间通信 之 管道
- 基于单片机火灾监测报警系统设计-毕设资料
- 网易云音乐等级快速升级 - 每天打卡听歌300首
- http协议及http协议和tcp协议的区别
- 96款2018最佳英文字体(附Mac字体安装方法)