OPENCV Android JNI开发 C++开发

版权声明:我是南七小僧,微信: to_my_love ,寻找人工智能相关工作,欢迎交流思想碰撞。 https://blog.csdn.net/qq_25439417/article/details/84767173

说明:

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

猜你喜欢

转载自blog.csdn.net/qq_25439417/article/details/84767173