У меня проблемы с инверсией сложной матрицы. Насколько мне известно, комплексная матрица - это просто двухканальная матрица (CV_32FC2 / CV_64FC2).
Скажем, у меня есть матрица C:
Mat C(2, 2, CV_64FC2);
C.at<Vec2d>(0,0)[0] = 1;
C.at<Vec2d>(0,0)[1] = 1;
C.at<Vec2d>(0,1)[0] = 3;
C.at<Vec2d>(0,1)[1] = 4;
C.at<Vec2d>(1,0)[0] = 2;
C.at<Vec2d>(1,0)[1] = -1;
C.at<Vec2d>(1,1)[0] = 5;
C.at<Vec2d>(1,1)[1] = 2;
Mat InverseMat;
invert(C, InverseMat, DECOMP_SVD);
После выполнения функции инвертирования я продолжаю получать эту ошибку:
Ошибка OpenCV: утверждение не удалось (тип == CV_32F || тип == CV_64F) в инверте
Функция инвертирования хорошо работает с загруженным изображением в градациях серого (1 канал), но мне трудно сделать инверсию для сложной матрицы, которая содержит действительную и мнимую части.
Подскажите, пожалуйста, как решить обратную задачу сложной матрицы? Предпочтительно использовать метод DECOMP_SVD, поскольку я не могу получить желаемый результат с помощью метода DECOMP_LU или DECOMP_CHOLESKY, когда я пытался с одноканальным изображением, вероятно, из-за вопроса сингулярной матрицы. Спасибо.