无法通过构造函数创建Opencv Java MatOfFloat4对象

时间:2016-11-15 09:35:18

标签: java opencv

我有一个具有以下变量的类:

private MatOfFloat4 horizonLine = new MatOfFloat4();

我稍后将其传递给函数,如下所示:

Imgproc.fitLine(tmpPoints, horizonLine, Imgproc.CV_DIST_L1, 0, 0.01, 0.01);

然而,我收到一个错误说:

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.core.Mat.n_Mat()J
    at org.opencv.core.Mat.n_Mat(Native Method)
    at org.opencv.core.Mat.<init>(Mat.java:24)
    at org.opencv.core.MatOfFloat4.<init>(MatOfFloat4.java:12)
    at obstacleDetector.HorizonDetector.<init>(HorizonDetector.java:327)
    at obstacleDetector.HorizonDetector.getInstance(HorizonDetector.java:59)
    at obstacleDetector.Detector.<clinit>(Detector.java:28)

指导我进行变量的初始化。为什么OpenCV不能初始化这个变量?有什么问题?

P.S:如果重要,我放置此变量的类是Singleton类:

public static HorizonDetector getInstance() {
        if (_instance == null) {
            _instance = new HorizonDetector();
        } else {
            System.out.println("Same instance of the Horizon Detector-Singleton class already exists.");
        }
        return _instance;
    }

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好的,事实证明MatOfFloat4应该通过列表或数组进行初始化。所以,我将horizo​​nLine定义为一个float数组:

horizonLine = new float[4];

稍后将其作为参数传递给构造函数,并且工作正常:

MatOfFloat4 tmpHorizonline = new MatOfFloat4(horizonLine);
Imgproc.fitLine(tmpPoints, tmpHorizonline, Imgproc.CV_DIST_L1, 0, 0.01, 0.01);