一、Mat类相关的操作
Mat构造函数:
Mat m=Mat(rows, cols, type);//指定m的行数、列数和数据类型
Mat m=Mat(Size(width,height), type);//指定m的大小与数据类型
二、矩阵操作
abs
函数描述:计算矩阵每一个元素的绝对值。
函数原型:
C++: MatExpr abs(const Mat& m) C++: MatExpr abs(const MatExpr& e)
参数:
m是一个矩阵
e是一个矩阵表达式
add
函数描述:一个矩阵的元素加上另一个矩阵的相应元素,或加上一个标量
函数原型:
参数:
src1是第一个输入矩阵或是一个标量
src1是第二个输入矩阵或是一个标量
dst 是一个与输入矩阵具有相同大小和通道个数的矩阵,它的深度由dtype或src1/src2的类型进行定义。
mask是一个待选择的操作,它是一个8位单通道矩阵,它指定输出矩阵的哪些元素被改变。
dtype是一个待选择的操作,它指定输出矩阵的深度。
注意:如果输出矩阵dst的深度为CV_32S,则在结果发生溢出时会得到不正确的结果。
bitwise_and
bitwise_not
bitwise_or
bitwise_xor
calcCovarMatrix
函数描述:计算一组矩阵的协方差矩阵。
函数原型:
C++: void calcCovarMatrix(const Mat* samples, int nsamples, Mat& covar, Mat& mean, int flags, int ctype=CV_64F) C++: void calcCovarMatrix(InputArray samples, OutputArray covar, InputOutputArray mean, int flags, int ctype=CV_64F)
参数:
samples: 存储于一组矩阵或以行列形式存储于单个矩阵的样本
nsamples: 样本的个数
cartToPolar
函数描述:计算一组虚数的幅值和角度,得到的角度的精度大概为0.3度。
函数原型:
void cartToPolar(InputArray x, InputArray y, OutputArray magnitude, OutputArray angle, bool angleInDegrees=false)
参数:
x是由x-坐标组成的向量
y是由-y坐标组成的向量
magnitude是计算得到的幅值向量,它的大小和数据类型与输入参数x相同。
solvePoly
函数描述:求解一个多项式方程的实数解或复数解。
函数原型:
C++: double solvePoly(InputArray coeffs, OutputArray roots, int maxIters=300 )
coeffs是由多项式的系数组成的数组。
roots是由多项式方程根组成的数组。
maxIters是执行求解多项式方程解的算法的最大迭代次数。
sort
函数描述:对矩阵的每一行或每一列进行排序。
函数原型:
C++: void sort(InputArray src, OutputArray dst, int flags)
split
函数描述:将一个矩阵的每个通道分离,得到多个由每一个通道组成的单通道矩阵。
函数原型:
C++: void split(const Mat& src, Mat* mvbegin) C++: void split(InputArray m, OutputArrayOfArrays mv)
sqrt
函数描述:计算一个矩阵每一个元素的平方根。
函数原型:
C++: void sqrt(InputArray src, OutputArray dst)
参数:
src是浮点型输入矩阵。
dst是一个数据类型和大小与输入矩阵src相同的矩阵。
注意:该函数结果的精度与内置函数std::sqrt大致相同。
subtract
函数描述:一个矩阵的元素减去另一个矩阵的相应元素,或减去一个标量
函数原型:
c++: void subtract(InputArray src1, InputArray src2, OutputArray dst, InputArray mask=noArray(), int dtype=-1)
参数:
src1是第一个输入矩阵或是一个标量
src1是第二个输入矩阵或是一个标量
dst 是一个与输入矩阵具有相同大小和通道个数的矩阵,它的深度由dtype或src1/src2的类型进行定义。
mask是一个待选择的操作,它是一个8位单通道矩阵,它指定输出矩阵的哪些元素被改变。
dtype是一个待选择的操作,它指定输出矩阵的深度。
注意:如果输出矩阵dst的深度为CV_32S,则在结果发生溢出时会得到不正确的结果。
SVD::SVD
函数描述:SVD的构造函数。
C++: SVD::SVD() C++: SVD::SVD(InputArray src, int flags=0)
SVD::operator ()
函数描述:对矩阵进行SVD分解。
函数原型:
C++: SVD& SVD::operator()(InputArray src, int flags=0)
SVD::compute
函数描述:对矩阵进行SVD分解。
函数原型:
C++: static void SVD::compute(InputArray src, OutputArray w, OutputArray u, OutputArray vt, int flags=0) C++: static void SVD::compute(InputArray src, OutputArray w, int flags=0 )
SVD::solveZ
函数描述:求解一个欠定奇异线性系统。
函数原型:
C++: static void SVD::solveZ(InputArray src, OutputArray dst)
SVD::backSubst
函数描述:执行奇异值反替换。
函数原型:
C++: void SVD::backSubst(InputArray rhs, OutputArray dst) const C++: static void SVD::backSubst(InputArray w, InputArray u, InputArray vt, InputArray rhs, OutputArray dst)
sum
函数描述:计算矩阵元素的和。若矩阵含有多个通道,则返回由矩阵每一个通道的和组成的向量
函数原型:
Scalar sum(InputArray src)
theRNG
函数描述:返回默认的随机数发生器。
函数原型:
C++: RNG& theRNG()
trace
函数描述:计算矩阵的迹,即计算矩阵对角元素的和
函数原型:
Scalar trace(InputArray mtx)
vconcat函数:用于两个Mat矩阵或者图像的水平拼接。
hconcat函数:用于两个Mat矩阵或者图像的垂直拼接。
vconcat(B,C,A); // 等同于A=[B;C]--比如矩阵B为M*N,矩阵C为M*H,则矩阵A为M*(N+H)
hconcat(B,C,A); // 等同于A=[B C]--比如矩阵B为M*N,矩阵C为H*N,则矩阵A为(M+H)*N