早上好!
我正在使用java进行人脸识别项目,但我在FaceRecognizer类上遇到了这个错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: com.compa.opencv.nativec.FisherFaceRecognizerID.createFisherFaceRecognizer_1()J
at com.compa.opencv.nativec.FisherFaceRecognizerID.createFisherFaceRecognizer_1(Native Method)
at com.compa.opencv.nativec.FisherFaceRecognizerID.<init>(FisherFaceRecognizerID.java:15)
at com.compa.opencv.PlayMain.createRecognizer(PlayMain.java:128)
at com.compa.opencv.PlayMain.cameraRecognize(PlayMain.java:88)
at com.compa.opencv.PlayMain.main(PlayMain.java:33)
我已尝试过以下链接中的解决方案,但它不起作用:s
Getting 'java.lang.UnsatisfiedLinkError': no lwjgl in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: no openalprjni in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError"
以下是包含错误的代码部分:
package com.compa.opencv.nativec;
import org.opencv.contrib.FaceRecognizer;
public class FisherFaceRecognizerID extends FaceRecognizer{
private static native long createFisherFaceRecognizer_1();
private static native long createFisherFaceRecognizer_1(int num_components);
private static native long createFisherFaceRecognizer_2(int num_components,
double threshold);
public FisherFaceRecognizerID() {
super(createFisherFaceRecognizer_1());
}
public FisherFaceRecognizerID(int num_components) {
super(createFisherFaceRecognizer_1(num_components));
}
public FisherFaceRecognizerID(int num_components, double threshold) {
super(createFisherFaceRecognizer_2(num_components, threshold));
}
}
此处的完整代码:https://www.dropbox.com/s/pa415f6lz3zbco7/DemoFaceRecognize-master%20%282%29.zip?dl=0
如果有任何帮助,我将不胜感激。
答案 0 :(得分:1)
在我看来,您正在使用依赖于原生二进制文件的第三方人脸识别库。
您必须在类路径中添加这些原生二进制文件,例如(* .dll文件在windows中,或* .so在unix或linux中)
UnsatisfiedLinkError - 通常表示无法找到本机二进制文件的Java本机接口(JNI)调用。
答案 1 :(得分:0)
这是我找到的临时解决方案:
在主java文件中右键单击 - &gt;属性 - &gt;运行/调试设置 - &gt;选择主java文件,然后单击编辑 - &gt;参数 - &gt;在VM参数字段中输入以下内容:
-Djava.library.path="C:\Program Files\Java\opencv2.4.13\build\java\x64; C:\Program Files\Java\opencv2.4.13\build\x64\vc12\bin"
这将指向dll文件的路径,但不幸的是它并没有与我合作:(
有没有人有任何不同的建议?