RotatedRect参数详解

首先解释一下类型中的成员

RotatedRect该类表示平面上的旋转矩形(摘自任重道远-HSY)包含以下三部分:

  1. 矩形中心点(质心)
  2. 边长(长和宽)
  3. 旋转角度
class CV_EXPORTS RotatedRect
{
public:
    //构造函数
    RotatedRect();
    RotatedRect(const Point2f& center, const Size2f& size, float angle);
    RotatedRect(const CvBox2D& box);
    void points(Point2f pts[]) const;//!返回矩形的4个顶点
    Rect boundingRect() const; //返回包含旋转矩形的最小矩形
    operator CvBox2D() const;    //!转换到旧式的cvbox2d结构
    Point2f center; //矩形的质心
    Size2f size;   //矩形的边长
    float angle;  //旋转角度,当角度为0、90、180、270等时,矩形就成了一个直立的矩形
};

这个类中包含了外接矩形的中心center、大小size以及角度angle,首先center是很好理解的,就是这个矩形的中心点位置,而angle代表的是旋转角度,size包含一个width和一个height,代表的是矩形的宽和高,但是具体角度是怎么算以及那条边是宽那条边是高呢?

有博主给出了解释:在opencv中,坐标的原点在左上角,与x轴平行的方向为角度为0,逆时针旋转角度为负,顺时针旋转角度为正。角度是水平轴(x轴)顺时针旋转,与碰到的第一个边的夹角度数。而opencv默认把这个边的边长作为height。

我不知道是否是我理解的问题,发现现实和这个并不一样,然后我做了一个实验,才发现这个角度和size是怎么计算的了:

其实这个角度的范围是0-180°,不会出现负数的情况,角度的计算是从矩形最上边的一个点开始,对于下图左边的情况,角度不会超过90°,右边的一定会大于90°,在这两种情况下,size的width和height我分别标了上去,这是我实验得出来的,是准确的,但是如果一定要说怎么计算的话大概要去看源码了,按照下边来计算也是很方便的,一共只会有这两种可能。

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

负壹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值