静态初始化
根据这种方法,所有 OpenCV 二进制文件都包含在你的应用程序包中。它主要用于开发和调试目的。对于生产代码,不推荐使用此方法,建议使用异步初始化。
如果你的应用程序项目没有 JNI 部分,只需将相应的 OpenCV 本机库从 OpenCV-3.1.0-android-sdk/sdk/native/libs
复制到项目目录到文件夹 app/src/main/jniLibs
。
如果应用程序项目带有 JNI 部分,而不是手动库复制,则需要修改 Android.mk
文件:在 include $(CLEAR_VARS)
之后和 include path_to_OpenCV-3.1.0-android-sdk/sdk/native/jni/OpenCV.mk
之前添加以下两个代码行:
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
结果应如下所示:
include $(CLEAR_VARS)
# OpenCV
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
include ../../sdk/native/jni/OpenCV.mk
之后,在 JNI 构建期间,OpenCV 库将被复制到你的应用程序 jniLibs
文件夹中。
在你的应用程序中启用 OpenCV 的最后一步是在调用 OpenCV API 之前的 Java 初始化代码。例如,它可以在 Activity 类的静态部分中完成:
static {
if (!OpenCVLoader.initDebug()) {
// Handle initialization error
}
}
如果你的应用程序包含其他依赖于 OpenCV 的本机库,则应在 OpenCV 初始化后加载它们:
static {
if (!OpenCVLoader.initDebug()) {
// Handle initialization error
} else {
System.loadLibrary("my_jni_lib1");
System.loadLibrary("my_jni_lib2");
}
}
注意: 对于生产代码,不推荐使用
initDebug()
方法。它仅用于实验和本地开发目的。如果要使用异步初始化发布应用程序使用方法。