简介
OpenCV中固定向量模板类cv::Vec<>派生自固定矩阵类cv::Matx<>,固定矩阵类解释参照我的博文OpenCV基础类型2,即使不知道固定矩阵类也不影响我们使用固定向量类,为了方便使用,固定向量类定义了一些别名,了解这些别名的规则至关重要。
固定向量别名命名规则:
cv::Vec{2,3,4,6}{b, s ,w , i, f, d}
{2,3,4,6}代表向量的长度。
{b, s ,w , i, f, d}表示向量内数据类型。
b:unsigned char ; s:short int
w:unsigned short; i:int
f:float; d:double
例:cv::Vec3i:三维向量,内部数据为整型
//使用示例:
//默认构造函数
cv::Vec2s v2s;
cv::Vec3i v3i;
//拷贝构造函数
cv::Vec3i v3i_a(v3i);
//值构造函数
cv::Vec3f v3f(1.0, 3.0, 6.0);
cv::Vec2d v2d(1.0, 2.0);
//成员访问,可用[]
float elem_v3f = v3f[0];
//向量叉乘
cv::Vec3d v3d_b(1, 0, 0);
cv::Vec3d v3d_c(0, 1, 0);
cv::Vec3d v3d_bcc = v3d_b.cross(v3d_c);
std::cout<<v3d_bcc<<std::endl;//对<<进行了运算符重载
其它的内置方法或静态方法请参考我的博文:OpenCV基础类型2。
里面介绍了固定矩阵类,固定向量类是由它派生而来,向量是一个只有一列的矩阵(在OpenCV中),注意OpenCV里面的向量都是列向量,计算时也按列向量计算。如果你想使用行向量形式就要特别注意数据放置的位置以及计算的顺序问题。
这种带有数字的类型,在OpenCV中多为某一模板类的别名,固定向量的别名类型可以拿来做向量运算,它还可以与Mat类配合使用。