矩阵乘矢量乘法

时间:2016-09-15 20:08:59

标签: java opencv

简单的问题。我找不到任何解决方案! 这没关系:

Mat dst = new Mat();
        Mat a = Mat.ones(3,3,CvType.CV_32FC1);
        Mat b = Mat.ones(3,3,CvType.CV_32FC1);
        Core.multiply(a, b, dst);
        System.out.println("DST\n" + dst.dump());

但这会导致错误:

Mat dst = new Mat();

        Mat a = Mat.ones(3,3,CvType.CV_32FC1);
        Mat b = Mat.ones(1,3,CvType.CV_32FC1);

//neither this
        Core.multiply(a, b, dst); ///<<<< ERROR
//nor this works
        Core.multiply(a, b.t(), dst); ///<<<< ERROR
        System.out.println("DST\n" + dst.dump());
  

OpenCV错误:输入参数的大小不匹配(操作是   既不是“数组操作数组”(其中数组具有相同的大小和相同的数组)   数量通道),也不是'数组操作标量',也不是'标量操作数组')   cv :: arithm_op,文件   C:\建立\ master_PackSlaveAddon-Win64的-VC12静电\的OpenCV \模块\芯\ SRC \ arithm.cpp,   1987年

请帮助找到解决方案。我怎样才能通过向量多重矩阵?

2 个答案:

答案 0 :(得分:0)

我不知道opencv框架,但是根据错误消息,你的第二个代码示例中的b似乎是一个单行矩阵。您需要一个列矩阵:

尝试使用如下定义的b:

Mat b = Mat.ones(3,1,CvType.CV_32FC1);

答案 1 :(得分:0)

这是正确的解决方案:

Core.gemm(a, b, 1, new Mat(), 0, dst, 0);

有点改进:

Basic matrix multiplication in OpenCV for Android