我正在尝试通过网络摄像头进行人脸检测,但是我收到错误,cascadeclassifier错误。
经过一些测试后,我发现这行代码会产生错误
CascadeClassifier face_cascade = new CascadeClassifier();
我得到的错误是
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.objdetect.CascadeClassifier.CascadeClassifier_0()J
at org.opencv.objdetect.CascadeClassifier.CascadeClassifier_0(Native Method)
at org.opencv.objdetect.CascadeClassifier.<init>(CascadeClassifier.java:38)
at CamCapture.main(CamCapture.java:24)
有人知道如何解决这个问题吗?
答案 0 :(得分:9)
最后我找到了答案,
我应该在使用cascadeclassifier之前加载库。 所以只需输入此代码
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
在级联分类器之前。
答案 1 :(得分:1)
尝试在BaseLoaderCallBack中初始化CascadeClassifier对象。在初始化CasCadeClassifier对象之前,OpenCV需要完全加载。
将其放在onCreate()或onResume()中:
if (!OpenCVLoader.initDebug())
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION, this, baseCallBack);
else
baseCallBack.onManagerConnected(LoaderCallbackInterface.SUCCESS);
将baseCallBack定义为:
private BaseLoaderCallback baseCallBack = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
if (status == SUCCESS) {
try {
initClassifiers(); // initialise here
} catch (IOException e) {
e.printStackTrace();
}
Log.d("OpenCVLoad", "OpenCV Loaded");
} else {
super.onManagerConnected(status);
}
}
};