学习Vec类、Mat_类、Matx类的使用和含义
目录
一、Vec类
二、Mat_模板矩阵类
三、Matx模板类
1、cv::Vec类是列向量,是固定模板类,格式为:
cv::Vec
2、Vec类型
3、 创建向量
cv:Vec2i v1(5, 6)
cv:Vec3f v2(1.0, 3.0, 5.0)
cv:Vec3f v3(v2) //v2赋值给v3
4. 访问向量元素
同数组访问一样,通过下标访问(下标从0开始)。
int first = v1[0]
Mat_() //没有参数的构造函数
Mat_(int _rows, int_cols) //等同于Mat(int _rows, int_cols, DataType type),创建行数为rows,列数为cols的矩阵
Mat_(Size _size) //等同于Mat(Size _size, DataType type),创建Size为size的矩阵
Mat_ (const Mat_ &m)
创建举例:
Mat M(100,100,CV_8U);
Mat_& M1 = (Mat_&)M;
3. Mat_具体类型
cv:Mat1{b,d,f,i,s,w}
b—uchar类型,d—double类型,f—float类型,i—int类型,s—short类型,w—ushort类型。
cv:Mat2{b,d,f,i,s,w} 2表示Vec2(2维向量)
cv:Mat3{b,d,f,i,s,w} 3表示Vec3(3维向量)
cv:Mat4{b,d,f,i,s,w} 4表示Vec4(4维向量)
Matx() 默认无参构造器
Matx( _Tp v0) //1x1的矩阵
Matx( _Tp v0, _Tp v1) //1x2或者2x1的矩阵
构造函数的参数有1,2, 3, 4, 5, 6, 7, 8, 9,10, 12, 14,16个,具体可以参考opencv的官方文档(https://docs.opencv.org/4.x/de/de1/classcv_1_1Matx.html#a8d6414aaa86e104f325da7be04260a8b)
float values[] = { 1, 2, 3};
Matx31f A0(values);
Matx41f A1 = {1, 2, 3, 4};
Matx33i A1(1, 2, 3,
4, 5, 6,
7, 8, 9);
3. cv::Matx的各种类型
cv:Matx{1} {2, 3, 4, 6} {d, f} d—double类型,f—float类型
cv:Matx{2} {1, 2, 3} {d, f}
cv:Matx{3} {1, 2, 3, 4} {d, f}
cv:Matx{4} {1, 3, 4} {d, f}
cv:Matx{6} {1, 6} {d, f}