RotatedRect参数详解

RotatedRect参数详解首先解释一下类型中的成员 RotatedRect 该类表示平面上的旋转矩形 摘自任重道远 HSY 包含以下三部分 矩形中心点 质心 边长 长和宽 旋转角度 classCV EXPORTSRotat public 构造函数 RotatedRect RotatedRect constPoint2f amp center con 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我分别标了上去,这是我实验得出来的,是准确的,但是如果一定要说怎么计算的话大概要去看源码了,按照下边来计算也是很方便的,一共只会有这两种可能。

 

 

 

今天的文章 RotatedRect参数详解分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-01-02 23:06
下一篇 2025-01-02 23:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/99402.html