В настоящее время я работаю над фрагментом кода, который должен выполнять матричное умножение двух матриц [3x4] * [4x1], чтобы получить матрицу [3x1]. Для этого я использую Java и OpenCV, поскольку работаю в контексте обработки изображений.
Вот упрощенный фрагмент кода, который я использовал:
Mat projectionMat = new Mat(3,4,CvType.CV_32FC1);
Mat pointI = new Mat(1,4,CvType.CV_32FC1);
Mat transPointI = new Mat(4,1,CvType.CV_32FC1);
Core.transpose(pointI, transPointI);
Mat sUV = new Mat(3,1,CvType.CV_32FC1);
I ' Я избавлю вас от того, как я заполняю матрицы, но когда я выгружаю (распечатываю) их после заполнения, вот что я получаю на терминале: projectionMatrix и transPointI
Итак У меня есть матрицы [3x4] и [4x1], следующим шагом является умножение матриц, которое я пытаюсь достичь с помощью функции openCv Core.gemm, как показано ниже - матрица sUV - это матрица назначения-:
Core.gemm(projectionMat, transPointI, 1, new Mat(), 0, sUV);
Из того, что я понял, здесь все должно работать, но когда я выполняю код, eclipse выдает ошибку, указывающую на строку Core.gemm:
Caused by: CvException [org.opencv.core.CvException: cv::Exception: OpenCV(3.4.10) C:\build\3_4_winpack-bindings-win64-vc14-static\opencv\modules\core\include\opencv2/core/mat.inl.hpp:607:
error: (-13:Image step is wrong) Step must be a multiple of esz1 in function 'cv::Mat::Mat']
at org.opencv.core.Core.gemm_1(Native Method)
at org.opencv.core.Core.gemm(Core.java:3702)
Я немного огляделся и могу Кажется, я не наткнулся на кого-нибудь, кто сталкивался с такой же проблемой. Даже когда возникают ошибки шага изображения, они обычно не вызваны функцией Core.gemm. В любом случае я немного заблудился, поэтому любое решение / подсказка к решению будет более чем приветствоваться, спасибо! :)