更新时间:2022-10-14 18:40:33
OpenCV只支持对浮点数或复杂类型。
您正在创建有符号整型矩阵。
支持的类型有:
CV_32FC1 //真正的浮动
CV_32FC2 //复杂的浮动
CV_64FC1 //真双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;
i need to multiply a matrix and its transpose but i get the following error :
"OpenCV Error: Assertion failed (type == B.type() && (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"
here is the code:
int dA[] = {
1, 2, 3,
4, 5, 6,
6, 5, 4,
};
Mat A = Mat(3,3, CV_32S, dA );
Mat C = A.t()* A;
OpenCV only supports matrix multiplication for matrices of floating point real or complex types.
You are creating matrix of signed integer type.
Supported types are:
CV_32FC1 //real float
CV_32FC2 //complex float
CV_64FC1 //real double
CV_64FC2 //complex double
The following similar code will work:
float dA[] = {
1, 2, 3,
4, 5, 6,
6, 5, 4,
};
Mat A = Mat(3,3, CV_32F, dA );
Mat C = A.t()* A;