说明:
最近项目需要用到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版本号获取,能成功获取到说明配置没问题。