【OpenCV3图像处理】RotatedRect类 详解

RotatedRect是一个存储旋转矩形的类,通常用来存储最小外包矩形函数minAreaRect( )和椭圆拟合函数fitEllipse( )返回的结果。存储的值,完全取决在于函数的返回


类的声明:OpenCV3 帮助文档

class 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结构
	
		float angle;    //旋转角度,当角度为0、90、180、270等时,矩形就成了一个直立的矩形  
		Point2f center; //矩形的质心      
		Size2f size;    //矩形的边长      
}

OpenCV中,坐标的原点在左上角,与x轴平行的方向为角度为0,逆时针旋转角度为负,顺时针旋转角度为正


minAreaRect( )函数和fitEllipse( )函数返回值不太一样


minAreaRect( )函数

返回的参数,请看下图:


角度参数angle 是矩形最下面的点(y坐标最大)P[0]发出的平行于x轴的射线,逆时针旋转,与碰到的第一个边的夹角(这个边的边长就作为width),取值范围[-90~0]。


成员函数

void points(Point2f pts[]) const;      //返回矩形的4个顶点
可以计算出矩形的四个角点。 计算出来的角点是 固定的顺序 ,如图所示。


在利用minAreaRect函数去求一个外接矩形时,函数对于矩形长和宽的选择取决于这个外接矩形的边与水平轴的角度距离,即将水平轴逆时针旋转,最先与其平行的边的长度作为宽度width,另外一条边则为height,而角度则直接取该边与水平轴的夹角。应该意识到,在minAreaRect函数中,RotatedRect的width和height的选取跟矩形的尺寸无关,并非长的就是height,短的就是width。


fitEllipse( )函数

返回的参数,请看下图:


角度参数angle 是椭圆中心center发出的平行于x轴的射线,顺时针旋转,与椭圆短轴的夹角,取值范围 [ 0 ~ 180 ]

椭圆的短轴为参数size里面的第一个参数width,长轴为参数size里面的第二个参数height。




  • 30
    点赞
  • 115
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值