說明:
最近項目需要用到opencv,所以查了下怎么配置,但是網上的教程大多很復雜,配置包含了opencv java庫的調用和jni,但前者我覺得太不好用,還有安裝manager這apk,實在麻煩,所以查了很多文章,總結并去除了一些我不需要的,僅僅配置jni調用,僅在此記錄下筆記,方便下次查閱。
前提:
使用sdk manager下載好cmake和NDK,具體方式百度就有。
到opencv官網下載所需的opencv版本,這篇文章使用3.2,OpenCV3.2 Android 源碼包,下載地址:https://sourceforge.net/projects/opencvlibrary/files/opencv-android/3.2.0/opencv-3.2.0-android-sdk.zip/download
創建支持cmake的項目
新建一個Android Studio工程,記得勾選 Include C++ Supports,并在Customize C++ Support中選在c++11,下面兩個也勾選上,具體什么用沒去查,參考別的教程來操作的。
opencv配置
因為是使用jni的方式,所以不需要import module的方式導入支持庫,只需用到dk/native/jni/include 頭文件和sdk/native/libs 對應平臺的so文件。具體操作為:把include文件拷貝到cpp目錄下,把libs下的對應平臺的文件夾拷貝到jniLibs(沒有的可以自己創建,具體位置為app/src/main/jniLibs)目錄。gradle文件下可以配置你要生成哪些平臺的so文件。在defaultConfig節點下添加,如:
ndk{ ?
? ? abiFilters 'armeabi-v7a'
}
修改CMakeLists.txt文件:
添加:
set(CMAKE_VERBOSE_MAKEFILE on)
set(libs "${CMAKE_SOURCE_DIR}/src/main/jniLibs")
#設置頭文件路徑
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include)
#添加庫
add_library(libopencv_java3 SHARED IMPORTED )
set_target_properties(libopencv_java3 PROPERTIES
IMPORTED_LOCATION "${libs}/${ANDROID_ABI}/libopencv_java3.so")
target_link_libraries( # Specifies the target library.
native-lib? android log -ljnigraphics libopencv_java3
# Links the target library to the log library
# included in the NDK.
${log-lib} )
注:增加的主要是加粗部分
這樣就算配好了,打開native-lib.cpp:
測試opencv是否可用,僅在as自動生成的cpp基礎上講返回字符串改為opencv版本號獲取,能成功獲取到說明配置沒問題。