(二十四) opencv中mat矩阵相乘

1、点乘--A*B

A*B是以数学运算中矩阵相乘的方式实现的,即Mat矩阵A和B被当做纯粹的矩阵做乘法运算,要求A的列数等于B的行数时,才能定义两个矩阵相乘。如A时m*n矩阵,B是n*p矩阵,乘积AB是一个m*p矩阵。

参与点乘的两个Mat矩阵的数据类型只能是CV_32F、CV_64FC1、CV_32FC2、CV_64FC2这4种类型中的一种。

2、dot--A.dot(B)

相当于数学向量运算中的点乘,也叫向量的内积、数量积。

对于向量a和向量b:

a= \left [a_{1},a_{2},....,a_{n} \right ]

b= \left [b_{1},b_{2},....,b_{n} \right ]

a和b的点积公式为:a\cdot b=a_{1}b_{1}+a_{2}b_{2}+....+a_{n}b_{n}

Dot方法声明中显示返回值是double

3、mul--A.mul(B)

Mul会计算两个Mat矩阵对应位的乘积,所以要求参与运算的矩阵A的行列和B的行列数一致

对于2*2大小的Mat矩阵A和B:

A=\begin{Bmatrix} a_{00} & a_{01}\\ a_{10} & a_{11} \end{Bmatrix}    B=\begin{Bmatrix} b_{00} & b_{01}\\ b_{10} & b_{11} \end{Bmatrix}

对A和B执行mul运算:

A.mul(B)=\begin{Bmatrix} a_{00}*b_{00} & a_{01}*b_{01}\\ a_{10}*b_{10} & a_{11}*b_{11} \end{Bmatrix}

Mul操作不对参与运算的两个矩阵A、B有数据类型上的要求,但要求A、B类型一致

Mat AB=A.mul(B),若声明AB时没有定义AB的数据类型,则默认AB的数据类型跟A和B保存一致

若AB精度不够,可能产生溢出,溢出的值被设置为当前精度下的最大值

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值