gpt4 book ai didi

java - Android 版 OpenCV 中的基本矩阵乘法

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:58 25 4
gpt4 key购买 nike

我在这里可能非常愚蠢,但我在使用 OpenCV for Android 进行一些基本的 Mat 乘法时遇到了麻烦。

我有两个相同类型的垫子,CV_64F

mat1 大小:3 行,3 列
mat2 大小:3 行,1 列

我想将它们相乘得到大小为 3 行、1 列的乘积 mat3

我试过使用:

Mat mat3 = new Mat(3, 1, CvType.CV_64F);
Core.multiply(mat1, mat2, mat3);


但是我得到一个错误:

CvException [org.opencv.core.CvException:/home/andreyk/OpenCV2/trunk/opencv_2.3.1.b2/modules/core/src/arithm.cpp:1253: error: (-209) The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array' in function void cv::arithm_op(const cv::_InputArray&, const cv::_InputArray&, const cv::_OutputArray&, const cv::_InputArray&, int, void (*)(const uchar, size_t, const uchar*, size_t, uchar*, size_t, cv::Size, void*), bool, void*)


我做错了什么?

提前感谢您的帮助。

编辑:
如果有帮助,3x3 矩阵 mat2Imgproc.getPerspectiveTransform 的结果,其余代码如下:

Mat mat1 = new Mat(3, 1, CvType.CV_64F);
mat1.put(0, 0, 2.0);
mat1.put(1, 0, 0.5);
mat1.put(2, 0, 1.0);

Mat mat3 = new Mat(3, 1, CvType.CV_64F);
Core.multiply(mat2, mat1, mat3);

最佳答案

您现在基本上是在尝试执行以下操作:

[ 0 ]   [ 0 1 2 ]
[ 1 ] * [ 3 4 5 ]
[ 2 ] [ 6 7 8 ]

这里 * 是乘法。不能以这种方式进行矩阵乘法。阅读矩阵乘法 here .

您要执行的操作是:

            [ 0 1 2 ]
[ 0 1 2 ] * [ 3 4 5 ]
[ 6 7 8 ]

要让您的代码正常工作,请进行以下更改:

Mat mat1 = new Mat(1, 3, CvType.CV_64F); // A matrix with 1 row and 3 columns
mat1.put(0, 0, 2.0); // Set row 1 , column 1
mat1.put(0, 1, 0.5); // Set row 1 , column 2
mat1.put(0, 2, 1.0); // Set row 1 , column 3

编辑

另外,您正在使用 Core.multiply 方法。在 OpenCv 的文档中提到:函数 multiply 计算两个矩阵的每个元素的乘积。如果您正在寻找矩阵产品,而不是每个元素的产品,请参阅 Core.gemm() .

函数 gemm(src1, src2, alpha, src3, beta, dest, flags) 根据以下函数执行乘法:

dest = alpha * src1 * src2 + beta * src3

基本矩阵乘法(在您的情况下)由以下人员完成:

Core.gemm(mat2, mat1, 1, NULL, 0, mat3, 0);

关于java - Android 版 OpenCV 中的基本矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10168058/

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