C++下OpenCV学习笔记----常用的数据结构(2)

C++下OpenCV学习笔记

----常用的数据结构和函数(2)

六.轻量级的Mat:Matx类
  1. 属于固定矩阵类,需要在使用前指定其维度。
(没有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;
  1. 常用操作
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X to Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值