OpenCV CascadeClassifier错误

时间:2013-05-08 20:38:38

标签: java opencv face-detection

我正在尝试通过网络摄像头进行人脸检测,但是我收到错误,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)

有人知道如何解决这个问题吗?


2 个答案:

答案 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);
        }
    }
};