首页 > 代码库 > opencv中各种矩阵乘的差别

opencv中各种矩阵乘的差别

尊重原创,转载请注明:http://blog.csdn.net/tangwei2014

OpenCV中每次遇到矩阵乘法就乱,各种翻各种查。
这次总结了一下。为了简单明了,还是让样例说话。



1. Mat*Mat:

第一个矩阵的列数必须等于第二个矩阵的行数。
[0, 1, 2, 3;     [0, 0, 0;       [14, 14, 14;
 0, 1, 2, 3;  *  1, 1, 1;  =    14, 14, 14;
 0, 1, 2, 3]      2, 2, 2;        14, 14, 14]
                       3, 3, 3]

2. Mat.mul(Mat):

两个矩阵维数必须同样,相应位置元素相乘。
[0, 1, 2, 3;            [ 0, 1, 2, 3;        [0, 1, 4, 9;
 0, 1, 2, 3;   .mul   0, 1, 2, 3;   =    0, 1, 4, 9;
 0, 1, 2, 3]              0, 1, 2, 3]         0, 1, 4, 9;]

3. Mat.dot(Mat):

相应元素相乘在加起来。
[0, 1, 2, 3;             [0, 1, 2, 3;        
 0, 1, 2, 3;   .dot    0, 1, 2, 3;   =    42
 0, 1, 2, 3]              0, 1, 2, 3]          

opencv中各种矩阵乘的差别