如果我使用OpenCV管理器,是否需要将OpenCV本机JNI库复制到jniLibs目录?

时间:2016-10-01 16:01:00

标签: android opencv image-processing opencv3.1

我正在开发(使用Android Studio)使用OpenCV 3.1.0的Android应用。我正在使用异步 OpenCV初始化。我的问题是:我是否需要将OpenCV本机库(OpenCV-android-sdk/sdk/native/libs)复制到我的jniLibs目录(app/src/main/jniLibs)?

在我阅读过的有关如何在Android Studio中设置OpenCV的所有教程中,他们都会复制这些库。但是,由于我使用OpenCV管理器访问外部安装在设备中的OpenCV库(而不是静态初始化),我认为我不需要复制库。我是对的吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

使用OpenCV for Android一段时间后,我可以回答一下我的问题:

异步初始化

如果您使用OpenCV Manager进行异步初始化,则不需要将本机OpenCV lib复制到您的项目中。因为您正在使用OpenCV Manager:

  

OpenCV Manager是一项旨在管理OpenCV库的Android服务   最终用户设备上的二进制文件。它允许共享OpenCV动态   同一设备上的应用程序之间的库。

更多信息:OpenCV Manager docs

静态初始化

根据这种方法,所有OpenCV二进制文件都包含到您的应用程序包中(生产代码不推荐使用此方法)。

没有JNI部分的应用
您必须将sdk/native/libs的内容复制到项目目录中的文件夹app/src/main/jniLibs

应用JNI部分:
您需要修改Android.mk文件。之后,在JNI构建期间,OpenCV库将被复制到您的应用程序jniLibs文件夹。

更多信息:Static Initialization docs

答案 1 :(得分:0)

是的,如果你使用sdk/native/libs,你将需要将jniLibs for OpenCV的内容复制到apps NDK目录中,基于java的类只是OpenCV的一个`包装器本机库使您更容易使用OpenCV。

请参阅以下链接查看更多官方文档:http://docs.opencv.org/2.4/doc/tutorials/introduction/android_binary_package/O4A_SDK.html