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 |

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值