RotatedRect和CvBox2D的角度疑云
来源:互联网 发布:java商品库存管理系统 编辑:程序博客网 时间:2024/05/21 23:32
在使用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:RotatedRect和CvBox2D的角度疑云
- RotatedRect和CvBox2D的角度疑云
- opencv学习笔记:RotatedRect和CvBox2D的角度疑云
- Cvbox2D(RotatedRect)的解析与应用
- 关于opencv中RotatedRect的角度疑问
- 获取OpenCV中RotatedRect的绝对角度
- 基础——RotatedRect中返回的角度angle
- 基础——RotatedRect中返回的角度angle
- Cvbox2D
- CvBox2D
- CvBox2D
- Cvbox2D
- CvBox2d
- Cvbox2D
- Cvbox2D
- Cvbox2D
- 扑灭雅虎和谷歌之间的广告疑云
- RotatedRect 可选择矩形 的绘制
- React Native ToolbarAndroid没显示
- poj2513 Colored Sticks / nyoj230 彩色棒(字典树,并查集,欧拉通路)
- Django从零开始搭建一个相册网站--1.序
- 初学者MFC界面可以调用的Windows消息
- SpringAOP之切点和切面的深入理解
- RotatedRect和CvBox2D的角度疑云
- Linux SCP命令 与 vsftpd 的配置
- Shiro学习
- Android手机USB OTG支持网线
- body的滚动事件的坑
- CodeForces
- nyoj 35 表达式求值
- HTML中几种为<button>绑定点击事件的方式比较
- RHEL-RH134-UNIT10-selinux的管理