мне нужно умножить матрицу и ее транспонирования, но я получаю следующую ошибку:
«Ошибка OpenCV: утверждение не выполнено (type == B.type () && (тип == CV_32FC1 || тип ==
CV_64FC1 || тип == CV_32FC2 || введите == CV_64FC2)) в неизвестной функции, файл ..
…. \ src \ opencv \ modules \ core \ src \ matmul.cpp, строка 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;
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;
Других решений пока нет …