opencv中Mat的使用

一、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)

 






1、opencv中矩阵的拼接–vconcat和hconcat函数 
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

猜你喜欢

转载自blog.csdn.net/x5675602/article/details/79967087