更多更详细的文章请关注微信公众号:SLAM之路
Opencv数据结构整体分为三大类
i.基本数据类型,直接由C++数据元素(int,float,等等)组成,如简单向量、简单矩阵或者表示几何概念的点、矩形、大小等等;
ii.helper objects,用于表示抽象的概念,如garbage-collecting pointer class、range objects;
iii.大数组类型,用于包含大规模数组、大规模几何元素、大规模基本数据类型;典型例子如cv::Mat类,用于表示任意维度数组包含任意基本数据类型;
iv.标准容器库,STL;
Ⅰ、基本数据类型
cv::Point类型
点类型,与固定向量类型cv::Vec紧密相连,它是两个或三个基本元素值得容器,当然点也可以根据其本身的模板生成;点类型和固定向量类型的主要区别在于:它可以通过变量名访问(mypoint.x,mypoint.y等等),而不是通过向量序号(myvec[0],myvec[1]等等);
点类型也具有其化名形式,如:
cv::Point2i表示二维点,整型
cv::Point2f表示二维点,单精度
cv::Point2d表示二维点,双精度
cv::Point3i表示三维点,整型
cv::Point3f表示三维点,单精度
cv::Point3d表示三维点,整型
下表是点类型支持的操作:默认构造、复制构造、值构造、强制转化为固定向量类型、访问成员、点积、叉乘;
cv::Scalar类型
实际上是一个四维点类型;但本质上cv::Vec<double,4>。
对于Scalar类型,强制转化为固定向量类型并未出