0

我正在尝试haarcascade_frontalface_alt.xml使用以下代码从 Android 资产加载文件:

File file = loadCascadeClassifierFile(context);
    if (file.exists()) {
        return new CvHaarClassifierCascade(cvLoad(file.getAbsolutePath());
    }else {
        throw new FileNotFoundException("File not found.");
    }

loadCascadeClassifierFile 完成它的工作并返回一个包含 xml 的文件,但它在

CvHaarClassifierCascade(cvLoad(file.getAbsolutePath());

例外是:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.facerecognition.facerecognition/com.myapp.facerecognition.facerecognition.activity.MainActivity}: java.lang.RuntimeException: /home/saudet/projects/bytedeco/javacpp-presets/opencv/cppbuild/android-arm/opencv-2.4.11/modules/core/src/persistence.cpp:5113: error: (-204) Could not find the/an object in file storage in function void* cvLoad(char const*, CvMemStorage*, char const*, char const**)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2412)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470)
        at android.app.ActivityThread.access$900(ActivityThread.java:174)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:146)
        at android.app.ActivityThread.main(ActivityThread.java:5593)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
        at dalvik.system.NativeStart.main(Native Method)

我已经在这个问题上停留了一段时间。有人解决过这个问题吗?

4

1 回答 1

0

也许下面的代码可以工作:

File file = loadCascadeClassifierFile(context);
if (file.exists()) {
    CvHaarClassifierCascade* classifer = (CvHaarClassifierCascade*)cvLoad(file.getAbsolutePath();
    return *classifer;
}else {
    throw new FileNotFoundException("File not found.");
}
于 2015-04-21T12:07:09.757 回答