android应用程序中openCV的静态初始化

时间:2014-07-05 06:10:46

标签: java android opencv javacv

好的,我不知道这里发生了什么,我已经阅读了很多关于这个案例的帖子并且跟着评论,但不幸的是我没有线索。

我已经阅读了关于静态初始化的openCV documentation。所以我将openCV原生库复制到我的libs文件夹。

然后我将这一行添加到我的代码中:

static {
    if (!OpenCVLoader.initDebug()) {
        // Handle initialization error
    }
}

最后,我添加了这一行:

 mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);

onCreate方法内。

现在,当我运行我的应用程序时,我遇到了这些错误:

07-05 10:34:44.926: E/AndroidRuntime(9548): FATAL EXCEPTION: main
07-05 10:34:44.926: E/AndroidRuntime(9548): Process: org.opencv.javacv.facerecognition, PID: 9548
07-05 10:34:44.926: E/AndroidRuntime(9548): java.lang.NoClassDefFoundError: java.lang.ClassNotFoundException: com.googlecode.javacv.cpp.opencv_calib3d
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacpp.Loader.load(Loader.java:455)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacv.cpp.opencv_contrib.<clinit>(opencv_contrib.java:104)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at org.opencv.javacv.facerecognition.PersonRecognizer.<init>(PersonRecognizer.java:42)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at org.opencv.javacv.facerecognition.FdActivity$1.onManagerConnected(FdActivity.java:153)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at org.opencv.javacv.facerecognition.FdActivity.onCreate(FdActivity.java:232)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at android.app.Activity.performCreate(Activity.java:5451)07-05 10:34:44.926: E/AndroidRuntime(9548):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2359)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2453)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at android.app.ActivityThread.access$900(ActivityThread.java:173)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at android.os.Handler.dispatchMessage(Handler.java:102)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at android.os.Looper.loop(Looper.java:136)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at android.app.ActivityThread.main(ActivityThread.java:5579)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at java.lang.reflect.Method.invokeNative(Native Method)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at java.lang.reflect.Method.invoke(Method.java:515)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at dalvik.system.NativeStart.main(Native Method)
07-05 10:34:44.926: E/AndroidRuntime(9548): Caused by: java.lang.ClassNotFoundException: com.googlecode.javacv.cpp.opencv_calib3d
07-05 10:34:44.926: E/AndroidRuntime(9548):     at java.lang.Class.classForName(Native Method)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at java.lang.Class.forName(Class.java:251)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacpp.Loader.load(Loader.java:453)
07-05 10:34:44.926: E/AndroidRuntime(9548):     ... 18 more
07-05 10:34:44.926: E/AndroidRuntime(9548): Caused by: java.lang.NoClassDefFoundError: java.lang.ClassNotFoundException: com.googlecode.javacv.cpp.opencv_highgui
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacpp.Loader.load(Loader.java:455)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacv.cpp.opencv_calib3d.<clinit>(opencv_calib3d.java:94)
07-05 10:34:44.926: E/AndroidRuntime(9548):     ... 21 more
07-05 10:34:44.926: E/AndroidRuntime(9548): Caused by: java.lang.ClassNotFoundException: com.googlecode.javacv.cpp.opencv_highgui
07-05 10:34:44.926: E/AndroidRuntime(9548):     at java.lang.Class.classForName(Native Method)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at java.lang.Class.forName(Class.java:251)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacpp.Loader.load(Loader.java:453)
07-05 10:34:44.926: E/AndroidRuntime(9548):     ... 22 more
07-05 10:34:44.926: E/AndroidRuntime(9548): Caused by: java.lang.NoClassDefFoundError: java.lang.ClassNotFoundException: com.googlecode.javacv.cpp.opencv_imgproc
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacpp.Loader.load(Loader.java:455)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacv.cpp.opencv_highgui.<clinit>(opencv_highgui.java:85)
07-05 10:34:44.926: E/AndroidRuntime(9548):     ... 25 more
07-05 10:34:44.926: E/AndroidRuntime(9548): Caused by: java.lang.ClassNotFoundException: com.googlecode.javacv.cpp.opencv_imgproc
07-05 10:34:44.926: E/AndroidRuntime(9548):     at java.lang.Class.classForName(Native Method)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at java.lang.Class.forName(Class.java:251)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacpp.Loader.load(Loader.java:453)
07-05 10:34:44.926: E/AndroidRuntime(9548):     ... 26 more
07-05 10:34:44.926: E/AndroidRuntime(9548): Caused by: java.lang.NoClassDefFoundError: java.lang.ClassNotFoundException: com.googlecode.javacv.cpp.opencv_core
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacpp.Loader.load(Loader.java:455)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacv.cpp.opencv_imgproc.<clinit>(opencv_imgproc.java:97)
07-05 10:34:44.926: E/AndroidRuntime(9548):     ... 29 more
07-05 10:34:44.926: E/AndroidRuntime(9548): Caused by: java.lang.ClassNotFoundException: com.googlecode.javacv.cpp.opencv_core
07-05 10:34:44.926: E/AndroidRuntime(9548):     at java.lang.Class.classForName(Native Method)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at java.lang.Class.forName(Class.java:251)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacpp.Loader.load(Loader.java:453)
07-05 10:34:44.926: E/AndroidRuntime(9548):     ... 30 more
07-05 10:34:44.926: E/AndroidRuntime(9548): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load jniopencv_core from loader dalvik.system.PathClassLoader[dexPath=/data/app/org.opencv.javacv.facerecognition-32.apk,libraryPath=/data/app-lib/org.opencv.javacv.facerecognition-32]: findLibrary returned null
07-05 10:34:44.926: E/AndroidRuntime(9548):     at java.lang.Runtime.loadLibrary(Runtime.java:358)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at java.lang.System.loadLibrary(System.java:526)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:593)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacpp.Loader.load(Loader.java:489)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacpp.Loader.load(Loader.java:431)
07-05 10:34:44.926: E/AndroidRuntime(9548):     at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:136)
07-05 10:34:44.926: E/AndroidRuntime(9548):     ... 33 more
07-05 10:34:44.926: E/AndroidRuntime(9548): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load tbb from loader dalvik.system.PathClassLoader[dexPath=/data/app/org.opencv.javacv.facerecognition-32.apk,library

我的javacpp.jar文件夹下还有javacv.jarlibs

编辑1 - 在我搜索了这个错误之后,我发现我应该拥有openCV库(不是Android SDK,用于Windows的openCV库)我的系统和我的环境变量bin中也应该有PATH文件夹。这是有道理的,因为javacv需要它来解析对象。

现在我在设备中运行应用程序时没有出现任何错误,但我的应用程序没有运行。每次打开它时,只会弹出错误消息并说Unfortunately your app has stopped!!。我想也许是因为openCVJavaCV库之间存在不兼容的版本问题。是吗?

0 个答案:

没有答案