靜態初始化

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