美文网首页
OpenCV学习笔记(二)基本数据类型

OpenCV学习笔记(二)基本数据类型

作者: 一个三要不起 | 来源:发表于2017-10-15 17:10 被阅读0次

    Point_

    首先介绍2维点对Point_,它的是一个模板类。我们可以直接访问数据成员x,y。它不仅定了+、-、==、!=这4个基本的操作,还定义了点乘、叉乘等操作。特别的这个类还提供了inside函数来判断一个点是否在矩形区域内。此外,还定义了一些其他的类型转化函数,比如转化为1.X版本的CvPoint。

    为了方便使用,opencv又对常用的类型进行了定义:

    typedef Point_ Point2i;

    typedef Point2i Point;

    typedef Point_ Point2f;

    typedef Point_ Point2d;

    同理还有Point3_,只不过它是一个3维点(x,y,z)而已。它的常用类型是:

    typedef Point3_ Point3i;

    typedef Point3_ Point3f;

    typedef Point3_ Point3d;

    Size_

    介绍完点,就可以介绍Size_了。它也是模板类。

    typedef Size_ Size2i;

    typedef Size2i Size;

    typedef Size_ Size2f

    Size能够访问的成员变量是height和width。还定义了area函数来求面积。其他的操作基本都是类型转化函数。

    Rect_

    下来介绍Rect_模版类。它是由左上角点和长度、宽度定义的。在opecv中,一般定义为左开右闭区间。有意思的是,这个类竟然也提供了一个Rect+Point的函数,作用是对矩形的偏移,还有一个Rect + Size的函数,在左上角不变的情况下,重新调整矩形的大小。其他的操作还有与&和|,是求两个矩形的交集和并集。

    除了基本的矩形之外,opecv还提供了一个可以旋转的矩形RotatedRect,它是由中心、变长、旋转角度决定的。你可以访问它的这三个成员,也可以使用points函数返回它的4个顶点,使用boundingRect求出它的外接矩形(非旋转)。

    Matx

    下面介绍Matx类,这也是一个模板类,用来记录一些小的矩形。这些矩形在编译前大小就固定了:

    typedef Matx Matx12f;

    typedef Matx Matx12d;

    ...

    typedef Matx Matx16f;

    typedef Matx Matx16d;

    typedef Matx Matx21f;

    typedef Matx Matx21d;

    ...

    typedef Matx Matx61f;

    typedef Matx Matx61d;

    typedef Matx Matx22f;

    typedef Matx Matx22d;

    ...

    typedef Matx Matx66f;

    typedef Matx Matx66d;

    如果要使用灵活的矩形,还是用Mat吧(下一章会介绍)。

    Vec

    下面介绍Vec类,它其实是元素较少的向量。

    typedef Vec Vec2b;

    typedef Vec Vec3b;

    typedef Vec Vec4b;

    typedef Vec Vec2s;

    typedef Vec Vec3s;

    typedef Vec Vec4s;

    typedef Vec Vec2i;

    typedef Vec Vec3i;

    typedef Vec Vec4i;

    typedef Vec Vec2f;

    typedef Vec Vec3f;

    typedef Vec Vec4f;

    typedef Vec Vec6f;

    typedef Vec Vec2d;

    typedef Vec Vec3d;

    typedef Vec Vec4d;

    typedef Vec Vec6d;

    它支持加、减、数乘、相等、不等、求范数等运算。

    Scalar_

    Scalar_类其实是用Vec派生下来的,也就是说,它是一个4元组:typedef Scalar_ Scalar;

    他通常用来传递像素。

    Range

    Range类用来指定连续的子序列。

    相关文章

      网友评论

          本文标题:OpenCV学习笔记(二)基本数据类型

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