【发布时间】:2020-07-10 08:45:39
【问题描述】:
我目前正在编写一段代码,该代码应该对两个矩阵 [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);
我不会告诉你我是如何填充矩阵的,但是当我在填充之后转储(打印)它们时,这是我在终端上获得的: 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 函数引起的。无论如何,我有点迷路了,所以任何解决方案/解决方案的提示都会受到欢迎,谢谢! :)
【问题讨论】:
标签: java opencv matrix matrix-multiplication mat