JavaCpp在Android中为OpenCV预设。示例抛出UnsatisfiedLinkError

时间:2018-03-26 10:22:06

标签: android opencv javacv javacpp

我正在尝试运行bytedeco的Android示例,但我经常得到一个

org.bytedeco.javacv.android.recognize.example E/art: dlopen("/data/app/org.bytedeco.javacv.android.recognize.example-2/lib/arm/libjniopencv_core.so", RTLD_LAZY) failed: dlopen failed: cannot locate symbol "_ZN2cv8internal18WriteStructContextD1Ev" referenced by "libniopencv_core.so"...

这就发生在这一行

opencv_face.FaceRecognizer faceRecognizer = createEigenFaceRecognizer();

中的

OpenCvRecognizeActivity

我在尝试使用opencv_core

的任何其他OpenCV相关类时遇到错误

我没有更改示例应用中的依赖项。它们看起来像这样:

compile group: 'org.bytedeco', name: 'javacv', version: '1.3.2'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '3.2.0-1.3', classifier: 'android-arm'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '3.2.0-1.3', classifier: 'android-x86'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '3.2.1-1.3', classifier: 'android-arm'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '3.2.1-1.3', classifier: 'android-x86'

我错过了什么吗?应用程序的设置是否需要先前的步骤?

由于

2 个答案:

答案 0 :(得分:0)

还不是100%肯定,但看起来问题是Android版本(我使用的是5.0设备)或设备本身。 我刚刚在新手机中安装了演示应用程序,它确实有用

答案 1 :(得分:0)

确保您的应用程序包含所有必需的.so文件。您可以使用Android studio进行检查,只需单击.apk文件,它将显示.apk文件内容。如果它没有opencv .so文件,那么手动将那些.so文件复制到" lib"项目中的文件夹,并在.gradle文件中提供它的依赖项。