opencv:RotatedRect和CvBox2D的角度疑云
来源:互联网 发布:逗游软件下载 编辑:程序博客网 时间:2024/05/21 19:22
在使用opencv的过程中经常会使用minAreaRect返回一个轮廓的外接矩形,它返回的是一个RotatedRect的类:
这个类中包含了外接矩形的中心center、大小size以及角度angle。为了更好的理解这几个参数的意义,请看下图:
在opencv中,坐标的原点在左上角,与x轴平行的方向为角度为0,逆时针旋转角度为负,顺时针旋转角度为正。而RotatedRect类是以矩形的哪一条边与x轴的夹角作为角度的呢?参考http://blog.csdn.net/mine1024/article/details/6044856的观点:angle 是水平轴(x轴)逆时针旋转,与碰到的第一个边的夹角,而opencv默认把这个边的边长作为width。由前面所说,angle的取值范围必然是负的,实际angle的取值范围为(-90,0]。利用成员函数void points(Point2f pts[]) const;可以计算出矩形的四个角点。计算的原理很简单:
图中的θ=-angle。从图中可知p[0].x=center.x-a
其中a=0.5*width*cosθ - b, b=heigth*sinθ,且cosθ=cos(angle),sinθ=sin(-angle)=-sin(angle)
那么p[0].x=center.x - 0.5*(width*cos(angle) + heigth*sin(angle)),对于p[0].y也可以用同样的原理计算,对应opencv中的源代码如下:
由此可知道,在opencv中,RotatedRect的角度实际上就是水平轴x与矩形宽width的夹角,而在利用minAreaRect函数去求一个外接矩形时,函数对于矩形长和宽的选择取决于这个外接矩形的边与水平轴的角度距离,即将水平轴逆时针旋转,最先与其平行的边的长度作为宽度width,另外一条边则为height,而角度则直接取该边与水平轴的夹角。应该意识到,在minAreaRect函数中,RotatedRect的width和height的选取跟矩形的尺寸无关,并非长的就是height,短的就是width。
原文地址:opencv学习
- opencv:RotatedRect和CvBox2D的角度疑云
- opencv学习笔记:RotatedRect和CvBox2D的角度疑云
- RotatedRect和CvBox2D的角度疑云
- 关于opencv中RotatedRect的角度疑问
- 获取OpenCV中RotatedRect的绝对角度
- Cvbox2D(RotatedRect)的解析与应用
- OpenCV-Cvbox2D
- 基础——RotatedRect中返回的角度angle
- 基础——RotatedRect中返回的角度angle
- OpenCV编程-> CvBox2D解析
- opencv笔记 RotatedRect类
- RotatedRect类opencv
- RotatedRect类opencv
- RotatedRect类opencv
- OpenCV中两个旋转矩形RotatedRect的交集
- OpenCV RotatedRect angle is wrong
- opencv 3.0 旋转矩形 RotatedRect
- Cvbox2D
- 侧滑drawerlayout的使用
- 如何设计稳定性横跨全球的 Cron 服务
- altium designer 工作记录
- JZOJ 4891 摆书(贪心)
- 完整性约束
- opencv:RotatedRect和CvBox2D的角度疑云
- SVN的检出、提交、更新、回复历史版本
- 输入一个年月日,判断是当年的第几天
- OpenDayLight 氢版本 RestAPI 调用实例(1)-拓扑的获取(Python)
- Eclipse下jsp模板设置
- Ural1014-Product of Digits
- 5个Linux 服务器发行版你值得拥有
- 英语听力常用词汇
- iOS Block源码分析系列(四)————__block和Block的循环引用