gpt4 book ai didi

java - 错误 : (-13:Image step is wrong) Step must be a multiple of esz1 in function 'cv::Mat::Mat'

转载 作者:行者123 更新时间:2023-12-02 16:23:44 28 4
gpt4 key购买 nike

我目前正在编写一段代码,该代码应该对两个矩阵 [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);
我将不告诉你我是如何填充矩阵的,但是当我在填充后转储(打印)它们时,这是我在终端上获得的:
projectionMatrixtransPointI
所以我确实有我的 [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 函数引起的。无论如何,我有点迷路了,所以任何解决方案/解决方案的提示都会非常受欢迎,谢谢! :)

最佳答案

好吧,事实证明我找到了我的问题的答案!这实际上是类型冲突的问题,我所有的矩阵都被实例化为包含浮点数,这在最后一次乘法之前是可以的,因为它会导致 double 数。所以我只需要改变我的矩阵来包含 double 。为此,我改变的是:

Mat projectionMat = new Mat(3,4,CvType.CV_64F);
Mat pointI = new Mat(1,4,CvType.CV_64F);
Mat transPointI = new Mat(4,1,CvType.CV_64F);
Core.transpose(pointI, transPointI);
Mat sUV = new Mat(3,1,CvType.CV_64F);
之后乘法执行成功!

关于java - 错误 : (-13:Image step is wrong) Step must be a multiple of esz1 in function 'cv::Mat::Mat' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62830527/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com