关于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详解相关推荐

  1. java return返回值_java中关于return返回值的用法详解

    我们输入一个条件时,系统就会对这个条件进行判断,然后给出一个返回时的结论,我们把这个结果看做是返回值.在java里可以使用return语句来进行返回,从字面意思就能很好的理解它的用法了.下面我们就re ...

  2. 【Unity编程】Unity中关于四元数的API详解

    Unity中关于四元数的API详解 Quaternion类 Quaternion(四元数)用于计算Unity旋转.它们计算紧凑高效,不受万向节锁的困扰,并且可以很方便快速地进行球面插值. Unity内 ...

  3. java mod %区别_Java中 % 与Math.floorMod() 区别详解

    %为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...

  4. Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)

       本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning 上篇文章<<Android中measure过程.WRAP_CONTENT详解以及xml布局文 ...

  5. python中selenium模块驱动谷歌详解

    python中selenium模块驱动谷歌详解 Selenium的介绍.配置和调用 Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中 ...

  6. python创建列向量_关于Numpy中的行向量和列向量详解

    关于Numpy中的行向量和列向量详解 行向量 方式1 import numpy as np b=np.array([1,2,3]).reshape((1,-1)) print(b,b.shape) 结 ...

  7. jQuery中getJSON跨域原理详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp28 jQuery中getJSON跨域原理详解 前几天我再开发一个叫 河蟹工 ...

  8. python平方数迭代器_对python中的高效迭代器函数详解

    python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...

  9. Oracle中序列(Sequence)详解

    Oracle中序列(Sequence)详解 一 序列定义 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).不占用磁盘空间,占用内存. 其主要用 ...

最新文章

  1. TortoiseSVN文件夹图标不显示
  2. dropdownlist总是获取第一个值
  3. 2019年华南理工大学程序设计竞赛(春季赛)
  4. 编写java程序的三步骤_帮助Java小白涨知识的教程(三)(运行HelloWorld程序)
  5. 第七节 VMware View 6.0 菜鸟入门 Composer 安装和部署
  6. vue/cli3 配置vux
  7. 为何加入了AddType就无法启动Apache
  8. java选择安装路径的功能怎么实现_水槽怎么选择,从安装方式,材质功能,江水平给你一次性说清楚...
  9. (19)Zynq FPGA TTC定时器介绍
  10. 折半插入排序C/C++
  11. DBSCAN(自适应密度聚类)算法解析
  12. python orderdict_Python OrderedDict字典排序方法详解
  13. PHP报错:Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars
  14. 【细胞分割】基于matlab GUI分水岭算法细胞分割计数【含Matlab源码 637期】
  15. springboot maven父项目脚手架
  16. 吴恩达的机器学习,属实牛逼
  17. 【H3C模拟器】华三交换机配置IRF堆叠
  18. 区块链代采供应链金融平台方案设计手稿
  19. python爬虫爬取知乎图片,轻松解决头像荒
  20. excel2016html,Excel2016中切换至全屏视图的两种方法

热门文章

  1. oracle缺省口令,更改口令加密的缺省算法(任务)
  2. 基本数据类型占多少字节
  3. 讲述在你的测试工作中遇到印象最深的一个BUG?
  4. 使用gsap javascript进行动画和React
  5. CAD中怎么定义视口?CAD视口定义教程
  6. 微信小程序中的数据双向绑定
  7. 关于银杏树的生长过程的资料
  8. Lattice CrossLinkNx LIFCL-40应用连载3-使用RISC-V软核
  9. python列表增删改查函数_Python之List列表的增删改查
  10. 《系统集成项目管理》第十章 项目质量管理