aihot  2017-05-14 09:18:10  OpenCV |   查看评论   
(int i=0;i
     {
        for(int j=0;j
         {
            for(int k=0;k
             {
                 printf("%.2f ",cvGet2D(Matrix,i,j).val[k]);
             }
         }
     printf("\n");
     }
}

執行結果:


因此,cvGEMM()利用#define的方式,將不必要的引數歸零或設為空或是將純量積設為1,所以才有cvmMul()及cvMulAdd()的變化,cvGEMM()的程式碼,它的數學運算方式如下所示


cvGEMM()也可以做矩陣轉置的運算,它將矩陣轉置的定義如下

#define CV_GEMM_A_T 1
#define CV_GEMM_B_T 2
#define CV_GEMM_C_T 4


如果要轉置A矩陣的話就用CV_GEMM_A_T,如果要轉置A跟B矩陣的話就用CV_GEMM_A_T+CV_GEMM_B_T(1+2=3),如果要轉置A,B,C矩陣的話就要用CV_GEMM_A_T+CV_GEMM_B_T+CV_GEMM_C_T(1+2+4=7),它可以用參數來表示,也可以用參數代號表示,只要將參數代號的數值累加即可,參數代號用1,2,4這種方式是用類似linux權限控制規劃的方法,在數學上的意義來講就是2n的加法可以表達出所有數字的組合,n=0,1,2...,在離散數學裡面可以找到這種計算規則,以下就是這個轉置運算的程式碼.


cvGEMM()轉置實作
#include
#include


float array1[]={3,1,2,0,1,5};
float array2[]={4,3,1,1,6,0};
float array3[]={-70,-4,15,5,15,5
 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自openCV的矩阵乘法

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]