C++下OpenCV学习笔记
----常用的数据结构和函数(2)
六.轻量级的Mat:Matx类
- 属于固定矩阵类,需要在使用前指定其维度。
(没有i):
typedef Matx<float, 1, 2> Matx12f;
typedef Matx<double, 1, 2> Matx12d;
typedef Matx<float, 1, 3> Matx13f;
typedef Matx<double, 1, 3> Matx13d;
typedef Matx<float, 1, 4> Matx14f;
typedef Matx<double, 1, 4> Matx14d;
typedef Matx<float, 1, 6> Matx16f;
typedef Matx<double, 1, 6> Matx16d;
typedef Matx<float, 2, 1> Matx21f;
typedef Matx<double, 2, 1> Matx21d;
typedef Matx<float, 2, 2> Matx22f;
typedef Matx<double, 2, 2> Matx22d;
typedef Matx<float, 2, 3> Matx23f;
typedef Matx<double, 2, 3> Matx23d;
typedef Matx<float, 3, 1> Matx31f;
typedef Matx<double, 3, 1> Matx31d;
typedef Matx<float, 3, 2> Matx32f;
typedef Matx<double, 3, 2> Matx32d;
typedef Matx<float, 3, 3> Matx33f;
typedef Matx<double, 3, 3> Matx33d;
typedef Matx<float, 3, 4> Matx34f;
typedef Matx<double, 3, 4> Matx34d;
typedef Matx<float, 4, 1> Matx41f;
typedef Matx<double, 4, 1> Matx41d;
typedef Matx<float, 4, 3> Matx43f;
typedef Matx<double, 4, 3> Matx43d;
typedef Matx<float, 4, 4> Matx44f;
typedef Matx<double, 4, 4> Matx44d;
typedef Matx<float, 6, 1> Matx61f;
typedef Matx<double, 6, 1> Matx61d;
typedef Matx<float, 6, 6> Matx66f;
typedef Matx<double, 6, 6> Matx66d;
- 常用操作
Method | Description |
---|---|
Matx() | 默认构造函数 |
explicit Matx(_Tp v0) | 1x1带参数构造函数 |
Matx(_Tp v0, _Tp v1) | 1x2 or 2x1 矩阵构造函数 |
Matx(_Tp v0, _Tp v1, _Tp v2) | 1x3 or 3x1 矩阵构造函数 |
Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3) | 1x4, 2x2 or 4x1 矩阵构造函数 |
Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4) | 1x5 or 5x1 矩阵构造函数 |
Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5) | 1x6, 2x3, 3x2 or 6x1 矩阵构造函数 |
Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5) | 1x6, 2x3, 3x2 or 6x1 矩阵构造函数 |
Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6) | 1x7 or 7x1 矩阵构造函数 |
Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7) | 1x8, 2x4, 4x2 or 8x1 矩阵构造函数 |
Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8) | 1x9, 3x3 or 9x1 矩阵构造函数 |
Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9) | 1x10, 2x5 or 5x2 or 10x1 矩阵构造函数 |
Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9, _Tp v10, _Tp v11) |
1x12, 2x6, 3x4, 4x3, 6x2 or 12x1 矩阵构造函数 |
Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9, _Tp v10, _Tp v11, _Tp v12, _Tp v13) |
1x14, 2x7, 7x2 or 14x1 矩阵构造函数 |
Matx(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9, _Tp v10, _Tp v11, _Tp v12, _Tp v13, _Tp v14, _Tp v15 ) |
1x16, 4x4 or 16x1 矩阵构造函数 |
Matx(const _Tp* vals) | 使用数组初始化矩阵 |
Matx(std::initializer_list<_Tp>) | 使用list初始化矩阵 |
static Matx all(_Tp alpha) | 所有矩阵的值初始化为alpha |
static Matx zeros() | 所有矩阵的值初始化为0 |
static Matx ones() | 所有矩阵的值初始化为1 |
static Matx eye() | 创建一个单位矩阵 |
static Matx diag(const diag_type& d) | 初始化对角矩阵 |
static Matx randu(_Tp a, _Tp b) | 创建矩阵的值在范围在a和b,该矩阵为均匀分布 |
Matx randn(_Tp a, _Tp b) | 创建矩阵其值均值为a, 间隔为b,该矩阵为正太分布 |
_Tp dot(const Matx<_Tp, m, n>& v) | 两个矩阵点乘,各个元素相乘并相加 |
double ddot(const Matx<_Tp, m, n>& v) | 两个矩阵点乘,返回数据精度为double |
template operator Matx<T2, m, n>() | 将矩阵进行强转,比如m44f = (Matx44f) m44d,强制转换矩阵为Matx44f |
template<int m1, int n1> Matx<_Tp, m1, n1> reshape() | 修改矩形的reshape,修改前后其矩阵元素个数总数必须一样 |
template<int m1, int n1> Matx<_Tp, m1, n1> get_minor(int base_row, int base_col) | 生成一个矩阵镜像即取其一个子矩阵,base_row和base_col分别为原矩阵的行和列的偏移。m1和n1为生成镜像矩阵大小 |
Matx<_Tp, 1, n> row(int i) | 选取原矩阵第i行 |
Matx<_Tp, m, 1> col(int i) | 选取原矩阵第i列 |
diag_type diag() | 返回原矩阵的所有处于对角行值 |
Matx<_Tp, n, m> t() | 矩阵转置 |
Matx<_Tp, n, m> inv(int method=DECOMP_LU, bool *p_is_ok = NULL) | 矩阵的逆 |
template Matx<_Tp, n, l> solve(const Matx<_Tp, m, l>& rhs, int flags=DECOMP_LU) | 线性解决:solve linear system |
Vec<_Tp, n> solve(const Vec<_Tp, m>& rhs, int method) | 线性解决:solve linear system |
Matx<_Tp, m, n> mul(const Matx<_Tp, m, n>& a) | 两个矩阵相对应位的乘 |
Matx<_Tp, m, n> div(const Matx<_Tp, m, n>& a) | 按元素划分两个矩阵:divide two matrices element-wise |
const _Tp& operator ()(int row, int col) | 按照row和col获取矩阵中的元素值 |
_Tp& operator ()(int row, int col) | 按照row和col获取矩阵中的元素值 |
const _Tp& operator ()(int i) | 一维场景下获取矩阵中的值 |
_Tp& operator ()(int i) | 一维场景下获取矩阵中的值 |
Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_AddOp) | 矩阵相加运算 |
Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_SubOp) | 矩阵相减运算 |
template Matx(const Matx<_Tp, m, n>& a, _T2 alpha, Matx_ScaleOp) | 矩阵缩放运算 |
Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_MulOp) | 矩阵相乘运算 |
Matx(const Matx<_Tp, m, n>& a, const Matx<_Tp, m, n>& b, Matx_DivOp) | 矩阵相除运算 |
t |