RotatedRect中返回的角度angle详解
关于RotatedRect中返回的角度angle的opencv官方说明文档里面没有给出太多到信息,但在python opencv关于该函数有详细的介绍:
在了解 RotatedRect中返回的角度angle之前,必须弄清楚的一件事是opencv图像坐标系的选取原则,在opencv中,图像的的坐标原点是左上角,以水平向右为X轴,以竖直向下为Y轴。而以往网上的资料都是建立在坐标原点是左下角,以水平向右为X轴,以竖直向上为Y轴,这对于大部分了解opencv的学习者来说,难以被接受,如图所示。
在了解OpenCV坐标系的选取规则之后,接下来我们就来讲讲有关RotatedRect中返回的角度angle的问题,具体的操作流程可参考https://www.cnblogs.com/panxiaochun/p/5478555.html,该文章详细的介绍了关于该角度angle的问题,但美中不足的是并没有得到一个比较令人通俗易懂的结论,在这里经过多次的论证,得出以下结论:
一、组成angel的最小外接矩形的边的选取问题。
angel的形成与选取的最小外接矩形的边有关,在这里我们只给出最终结论,有兴趣的同志,可以自己去验证一下,距离坐标原点最近的最小外接矩形的边,作为angel的一条边或者其延长线,而另一条边为X轴,两条线最终形成一个夹角。如图所示
二、angel角度正负的问题。
关于角度正负的问题,在OpenCV4.0官方文档中有详细的介绍,取值范围为[-90,0],至于为什么是这个角度范围,我个人理解是在X轴上方的均为负值,在X轴下方的均为正值,这样就不用去管什么逆时针旋转,顺时针旋转的问题,而对于RotatedRect中返回的角度angle的取值范围也就容易理解了。
三、angel角度的单位问题
在opencv的源码的\modules\ imgproc\src下的rot calipers.cpp里可以找到minareaRect()函数的源码,该函数会返回RotatedRect,在c#版会返回CvBox2D,两个是一样的,在里面找到了angle不是弧度最佳证明:
box.angle = (float)(box.angle*180/CV_PI);
可以看出返回的RotatedRect的angle不是弧度单位,刚开始angle是弧度的,后来经过转换后再输出了,可能前几个版本里面的angle是弧度的后来改为度了。
RotatedRect中返回的角度angle详解相关推荐
- java return返回值_java中关于return返回值的用法详解
我们输入一个条件时,系统就会对这个条件进行判断,然后给出一个返回时的结论,我们把这个结果看做是返回值.在java里可以使用return语句来进行返回,从字面意思就能很好的理解它的用法了.下面我们就re ...
- 【Unity编程】Unity中关于四元数的API详解
Unity中关于四元数的API详解 Quaternion类 Quaternion(四元数)用于计算Unity旋转.它们计算紧凑高效,不受万向节锁的困扰,并且可以很方便快速地进行球面插值. Unity内 ...
- java mod %区别_Java中 % 与Math.floorMod() 区别详解
%为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)
本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning 上篇文章<<Android中measure过程.WRAP_CONTENT详解以及xml布局文 ...
- python中selenium模块驱动谷歌详解
python中selenium模块驱动谷歌详解 Selenium的介绍.配置和调用 Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中 ...
- python创建列向量_关于Numpy中的行向量和列向量详解
关于Numpy中的行向量和列向量详解 行向量 方式1 import numpy as np b=np.array([1,2,3]).reshape((1,-1)) print(b,b.shape) 结 ...
- jQuery中getJSON跨域原理详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp28 jQuery中getJSON跨域原理详解 前几天我再开发一个叫 河蟹工 ...
- python平方数迭代器_对python中的高效迭代器函数详解
python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...
- Oracle中序列(Sequence)详解
Oracle中序列(Sequence)详解 一 序列定义 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).不占用磁盘空间,占用内存. 其主要用 ...
最新文章
- TortoiseSVN文件夹图标不显示
- dropdownlist总是获取第一个值
- 2019年华南理工大学程序设计竞赛(春季赛)
- 编写java程序的三步骤_帮助Java小白涨知识的教程(三)(运行HelloWorld程序)
- 第七节 VMware View 6.0 菜鸟入门 Composer 安装和部署
- vue/cli3 配置vux
- 为何加入了AddType就无法启动Apache
- java选择安装路径的功能怎么实现_水槽怎么选择,从安装方式,材质功能,江水平给你一次性说清楚...
- (19)Zynq FPGA TTC定时器介绍
- 折半插入排序C/C++
- DBSCAN(自适应密度聚类)算法解析
- python orderdict_Python OrderedDict字典排序方法详解
- PHP报错:Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars
- 【细胞分割】基于matlab GUI分水岭算法细胞分割计数【含Matlab源码 637期】
- springboot maven父项目脚手架
- 吴恩达的机器学习,属实牛逼
- 【H3C模拟器】华三交换机配置IRF堆叠
- 区块链代采供应链金融平台方案设计手稿
- python爬虫爬取知乎图片,轻松解决头像荒
- excel2016html,Excel2016中切换至全屏视图的两种方法