Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中乘以2个矩阵,然后将结果用作Imgproc.perspective函数的转换矩阵_Java_Opencv - Fatal编程技术网

如何在java中乘以2个矩阵,然后将结果用作Imgproc.perspective函数的转换矩阵

如何在java中乘以2个矩阵,然后将结果用作Imgproc.perspective函数的转换矩阵,java,opencv,Java,Opencv,我想创建3个矩阵: A为3x4,B为4x4,C为4x3。然后我想把它们乘以D=A*(B*C)得到一个3x3矩阵 然后用D调用透视图。 所有这些都需要用Java来完成。在C++中,它非常容易与java相反,我找不到java实现的任何真正的例子。你找到了吗?你找到了吗? package test; import org.opencv.core.Core; import org.opencv.core.CvType; import org.opencv.core.Mat; import org.op

我想创建3个矩阵: A为3x4,B为4x4,C为4x3。然后我想把它们乘以D=A*(B*C)得到一个3x3矩阵 然后用D调用透视图。 所有这些都需要用Java来完成。在C++中,它非常容易与java相反,我找不到java实现的任何真正的例子。你找到了吗?你找到了吗?
package test;

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgproc.Imgproc;

public class MatrixMul {

    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

    public static void main(String[] args) {
        Mat A = new Mat(3, 4, CvType.CV_32FC1);
        Mat B = new Mat(4, 4, CvType.CV_32FC1);
        Mat C = new Mat(4, 3, CvType.CV_32FC1);
        Mat tmp = new Mat();
        Mat D = new Mat();

        A.put(0, 0, new float[] { 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3 });
        B.put(0, 0, new float[] { 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4 });
        C.put(0, 0, new float[] { 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3 });

        Core.gemm(B, C, 1, new Mat(), 0, tmp);
        Core.gemm(A, tmp, 1, new Mat(), 0, D);

//      Mat src = ...
//      Mat dst = new Mat();
//      Imgproc.warpPerspective(src, dst, D, new Size(3,3));

        System.out.println("A =\n" + A.dump());
        System.out.println("B =\n" + B.dump());
        System.out.println("C =\n" + C.dump());
        System.out.println("B * C =\n" + tmp.dump());
        System.out.println("D = A * (B * C) =\n" + D.dump());
    }

}