我有一个具有以下变量的类:
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;
}
有什么想法吗?
答案 0 :(得分:0)
好的,事实证明MatOfFloat4
应该通过列表或数组进行初始化。所以,我将horizonLine定义为一个float数组:
horizonLine = new float[4];
稍后将其作为参数传递给构造函数,并且工作正常:
MatOfFloat4 tmpHorizonline = new MatOfFloat4(horizonLine);
Imgproc.fitLine(tmpPoints, tmpHorizonline, Imgproc.CV_DIST_L1, 0, 0.01, 0.01);