Opencv中Mat矩阵相乘 | 您所在的位置:网站首页 › 乘英文函数 › Opencv中Mat矩阵相乘 |
Mat矩阵点乘——A*B
Opencv重载了运算符“*”,姑且称之为Mat矩阵“点乘”,其中一个重载声明为: CV_EXPORTS MatExpr operator * (const Mat& a, const Mat& b); 点乘说明:
1. A*B是以数学运算中矩阵相乘的方式实现的,即Mat矩阵A和B被当做纯粹的矩阵做乘法运算,这就要求A的列数等 于B的行数时,才能定义两个矩阵相乘。如A是m×n矩阵,B是n×p矩阵,它们的乘积AB是一个m×p矩阵。
如上图所示,C=AB。C中第i行第j列所在元素C(i,j)等于A中第i行所有元素跟B中第j列所有元素一一对应的乘积之和。 更具有代表性的的:对于A、B都是2行2列矩阵的情况:
Opencv验证: 定义两个Mat矩阵A和B点乘,A为2行3列,B为3行2列: #include "core/core.hpp" #include "iostream" using namespace std; using namespace cv; int main(int argc,char *argv[]) { Mat A=Mat::ones(2,3,CV_32FC1); Mat B=Mat::ones(3,2,CV_32FC1); Mat AB; A.at(0,0)=1; A.at(0,1)=2; A.at(0,2)=3; A.at(1,0)=4; A.at(1,1)=5; A.at(1,2)=6; B.at(0,0)=1; B.at(0,1)=2; B.at(1,0)=3; B.at(1,1)=4; B.at(2,0)=5; B.at(2,1)=6; AB=A*B; cout |
CopyRight 2018-2019 实验室设备网 版权所有 |