美文网首页Opencv3基础学习
【opencv12】cv::Size/cv::Rect/cv::

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

作者: yuanCruise | 来源:发表于2018-12-18 22:06 被阅读42次
    1.cv::Size类

    在实践中,size类与对应的Point点类(一致类型的)类似,可以互相转换。主要的区别在size类中的两个数据成员叫做widthheight,而在Point点类中的连个数据成员叫做xy。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点类的成员xy(表示矩形的左上角)以及size类的成员widthheight(表示矩形的大小)。但是,矩形类不会从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] );

    相关文章

      网友评论

        本文标题:【opencv12】cv::Size/cv::Rect/cv::

        本文链接:https://www.haomeiwen.com/subject/qaulkqtx.html