oepncv图像处理学习(十)——矩阵运算

到现在我们了解一些算法背后的矩阵运算,本人便整理了opencv中矩阵运算的函数

<1>位运算

PS:需要两个二值化的矩阵进行运算。

与:bitwise_and(Mat InputArray1,Mat InputArray2,Mat  outputArray);

或:bitwise_or(Mat InputArray1,Mat InputArray2,Mat  outputArray);

非:bitwise_not(Mat InputArray,Mat  outputArray);

异或:bitwise_xor(Mat InputArray1,Mat InputArray2,Mat  outputArray);

<2>矩阵运算

相加:add(src1,src2,dst,mask,dtype=-1)//dst=src1+src2,mask和dtype不需要管

addweighted(src1,alpha,src2,beta,gamma,dst,int dtype = -1)//dst=src1*alpha+src2*beta+gamma

scaleadd(src1,alpha,src2,dst);//dst=src1*alpha+src2

PS:cv::convertScaleAbs()用于实现对整个图像数组中的每一个元素,进行如下操作:

操作可实现图像增强等相关操作的快速运算,具体用法如下:

void cv::convertScaleAbs(
    cv::InputArray src, // 输入数组
    cv::OutputArray dst, // 输出数组
    double alpha = 1.0, // 乘数因子
    double beta = 0.0 // 偏移量
);

相减:absdiff(src1,src2,dst);//dst=|src1-src2|;

subtract(src1,,src2,dst);//dst=src1-src2;

相乘:

multiply(src1,src2,dst,scale,dtype=-1);//dst=scale*src1*src2

src1.mul(src2)//dst=src1.*src2

相除:

divide(src1,src2,dst,scale,dtype=-1);//dst=scale*src1/src2

点乘:

double value = src1.dot(src2)//value = src1a11*src2b11+src1a12*src2b12+……+src1a1n*src2b1n

叉乘:

Mat dst = src1.cross(src2)

开方:

sqrt(src,dst);//dst=\sqrt{src}

幂:

pow(src,power,dst);//dst=src^{power}

指数:

exp(src,dst);//dst=e^{src};

对数:

log(src,dst);//dst=\left | ln(src) \right |

你可能感兴趣的:(学习opencv,opencv)