2013-02-10 137 views
2

我需要乘以矩陣及其轉置,但我得到了以下錯誤:opencv的矩陣乘法

「OpenCV的錯誤:斷言失敗(類型== B.type()& &(類型== CV_32FC1 || type == CV_64FC1 || type == CV_32FC2 || type == CV_64FC2))in unknown function,file .. .... \ src \ opencv \ modules \ core \ src \ matmul.cpp,line 711「

這裏是代碼:

int dA[] = { 
    1,  2,  3, 
    4,  5,  6, 
    6,  5,  4, 
    }; 
Mat A = Mat(3,3, CV_32S, dA); 
Mat C = A.t()* A; 

回答

6

OpenCV僅支持浮點實型或復型矩陣乘法。

您正在創建有符號整數類型的矩陣。

支持的類型包括:

CV_32FC1 //real float 
CV_32FC2 //complex float 
CV_64FC1 //real double 
CV_64FC2 //complex double 

以下類似的代碼將工作:

float dA[] = { 
    1,  2,  3, 
    4,  5,  6, 
    6,  5,  4, 
    }; 
Mat A = Mat(3,3, CV_32F, dA); 
Mat C = A.t()* A;