說(shuō)明:
最近項(xiàng)目需要用到opencv,所以查了下怎么配置,但是網(wǎng)上的教程大多很復(fù)雜,配置包含了opencv java庫(kù)的調(diào)用和jni,但前者我覺(jué)得太不好用,還有安裝manager這apk,實(shí)在麻煩,所以查了很多文章,總結(jié)并去除了一些我不需要的,僅僅配置jni調(diào)用,僅在此記錄下筆記,方便下次查閱。
前提:
使用sdk manager下載好cmake和NDK,具體方式百度就有。
到opencv官網(wǎng)下載所需的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
創(chuàng)建支持cmake的項(xiàng)目
新建一個(gè)Android Studio工程,記得勾選 Include C++ Supports,并在Customize C++ Support中選在c++11,下面兩個(gè)也勾選上,具體什么用沒(méi)去查,參考別的教程來(lái)操作的。
opencv配置
因?yàn)槭鞘褂胘ni的方式,所以不需要import module的方式導(dǎo)入支持庫(kù),只需用到dk/native/jni/include 頭文件和sdk/native/libs 對(duì)應(yīng)平臺(tái)的so文件。具體操作為:把include文件拷貝到cpp目錄下,把libs下的對(duì)應(yīng)平臺(tái)的文件夾拷貝到j(luò)niLibs(沒(méi)有的可以自己創(chuàng)建,具體位置為app/src/main/jniLibs)目錄。gradle文件下可以配置你要生成哪些平臺(tái)的so文件。在defaultConfig節(jié)點(diǎn)下添加,如:
ndk{ ?
? ? abiFilters 'armeabi-v7a'
}
修改CMakeLists.txt文件:
添加:
set(CMAKE_VERBOSE_MAKEFILE on)
set(libs "${CMAKE_SOURCE_DIR}/src/main/jniLibs")
#設(shè)置頭文件路徑
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include)
#添加庫(kù)
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} )
注:增加的主要是加粗部分
這樣就算配好了,打開(kāi)native-lib.cpp:
測(cè)試opencv是否可用,僅在as自動(dòng)生成的cpp基礎(chǔ)上講返回字符串改為opencv版本號(hào)獲取,能成功獲取到說(shuō)明配置沒(méi)問(wèn)題。