靜態初始化
根據這種方法,所有 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()
方法。它僅用於實驗和本地開發目的。如果要使用非同步初始化釋出應用程式使用方法。