简单的问题。我找不到任何解决方案! 这没关系:
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年
请帮助找到解决方案。我怎样才能通过向量多重矩阵?
答案 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);
有点改进: