【opencv12】cv::Size/cv::Rect/cv::RotatedRect类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qiu931110/article/details/85195268
1.cv::Size类

在实践中,size类与对应的Point点类(一致类型的)类似,可以互相转换。主要的区别在size类中的两个数据成员叫做 w i d t h width h e i g h t height ,而在Point点类中的连个数据成员叫做 x x y y 。size类的三个别名为:cv::Size, cv::Size2i, 和 cv::Size2f。前面两个是相同的用来表示整型size,而最后一个是32位浮点型size。

操作 例子
默认构造函数 cv::Size sz;cv::Size2i sz;cv::Size2f sz;
带值的构造函数 cv::Size2f sz( w, h );
访问函数成员 sz.width; sz.height;
compute area sz.area();

与Point点类不同,size类不支持强制转换为固定向量类(cv::Vec)。这意味着size类的应用将会有更多的限制。另一方面,Point点类和固定向量类可以毫无问题地转换为size类。

2.cv::Rect类

Rect矩形类包括Point点类的成员 x x y y (表示矩形的左上角)以及size类的成员 w i d t h width h e i g h t height (表示矩形的大小)。但是,矩形类不会从Point点类或size类继承,因此通常不会从它们继承操作符。

操作 例子
默认构造函数 cv::Rect r;
拷贝构造函数 cv::Rect r2( r1 );
带值的构造函数 cv::Rect( x, y, w, h );
用点类和size类创建 cv::Rect( p, sz );
双角创建 cv::Rect( p1, p2 );
访问函数成员 r.x; r.y; r.width; r.height;
compute area r.area();
提取左上角 r.tl();
提取右下角 r.br();
point点类p是否在rect类r中 r.contains( p );

Rect还支持各种重载运算符,可用于计算两个矩形或一个矩形和另一个对象的各种几何属性。

操作 例子
两个矩阵相交的矩阵 cv::Rect r3 = r1 & r2;r1 &= r2;
包含矩形r1和r2的最小矩形的面积 cv::Rect r3 = r1 | r2;r1 |= r2;
将矩形r平移x cv::Rect rx = r + x;r += x;
将矩形r按大小s进行放大 cv::Rect rs = r + s;r += s;
比较矩形r1和r2是否完全相等 bool eq = (r1 == r2);
比较矩形r1和r2是否不相等 bool ne = (r1 != r2);
3.cv::RotatedRect类

RotatedRect类是c++ OpenCV接口中为数不多的不是底层模板类。相反,它是一个容器,其中包含cv::Point2f类型称为center, cv::Size2f类型的称为size,以及一个额外的值称为angle的选择,后者表示围绕中心的矩形的旋转。cv::RotatedRect和cv::Rect之间有一个非常重要的区别,即cv::RotatedRect位于相对于其中心的“空间”中,而cv::Rect位于相对于其左上角的位置。

操作 例子
默认构造函数 cv::RotatedRect rr();
拷贝构造函数 cv::RotatedRect rr2( rr1 );
带值的构造函数,一个point一个size一个角度值 cv::RotatedRect rr( p, sz, theta ) ;
双角创建 cv::RotatedRect( p1, p2 );
访问函数成员 rr.center; rr.size; rr.angle;
返回拐角的列表 rr.points( pts[4] );

猜你喜欢

转载自blog.csdn.net/qiu931110/article/details/85195268
CV