基本数据类型
模板类:
(1) cv::Vec<> 固定向量类(在编译时已知了向量的维度)
大部分时间不会直接使用这个形式,而是使用它的别名(typedef)
cv::Vec2i, cv::Vec4d......任何cv::Vec{2,3,4,6}{b, w, s, i, f, d}的组合都是有效的
b(unsigned char),w(unsigned short), s(short),i(int),f(float),d(double)
(2) cv::Matx<>固定矩阵类
同理, cv::Matx{1,2,3,4,6}{1,2,3,4,6}{f, d}
Point类
二维点或者三维点
点类型声明:Point+维度+类型
b- unsigned char s- short int i- 32-bit int f- 32-bit float d- 64-bit float
默认构造 Point2i p1;
Point3f p2;
拷贝构造 Point3f p2(p1);
数值初始化 Point2i p1(x0,x1);
Point3f p2(x0,x1,x2);
构造成固定向量类 (Vec3f) p;
成员访问 p.x; p.y;
点积运算 float x = p1.dot(p2);
双精度点积 double x = p1.dot(p2);
向量积(仅适用三维) p1.cross(p2);
查询是否在某区域(rectangle)内(仅适用二维) p.inside(r);
cv::Scalar类
四维点类,所有成员都是双精度浮点数, 它是从固定向量类模板实例中继承而来,它继承了所有向量代数操作,成员访问函数(比如操作符[])等。
Scalar是一个由长度为4的数组作为元素构成的结构体,Scalar最多可以存储四个值,没有提供的值默认是0。
默认构造 Scalar s;
拷贝构造 Scalar s2(s1);
数值初始化 Scalar s(x0); Scalar s(x0,x1,x2,s3);
数组元素相乘 s1.mul(s2);
(四元数)共轭 s1.conj();
(四元数)真值测试 s1.isReal();
size类
size类在实际操作时与point类相似
相比Point类,
1.数据成员不同,Size类成员为width 和 height
2.不能转换成固定大小的Vector类,但Vector类和Point类可以转换成Size类
Size类存在三种别名 Size == Size2i、Size2f
默认构造 cv::Size sz;
cv::Size2i sz;
cv::Size2f p2;
拷贝构造 cv::Size sz2(sz1);
数值初始化 cv::Size sz(w,h);
成员访问 sz.width; sz.height;
计算区域面积 sz.area();