移动端Android Opencv JNI 如何配置,快速,简单。

因项目需要移植算法到Android平台,开始学习如何再移动端上使用Opencv。自己复现了opencv中的一些代码,但是执行速度不及opencv。

推荐阅读:

https://blog.csdn.net/martin20150405/article/details/53284442

1.准备好SDK环境

参照谷歌官文:https://developer.android.google.cn/studio/projects/add-native-code#link-gradle

在SDK Manager下安装好CMake\LLDB\NDK

2.创建一个新工程

3.配置OpenCV Android SDK

注意此处:不同于前面给的3篇文章,本文不需要创建jniLibs文件夹和对jniLibs的gradle设置,新的AS已经可以自动打包到apk

此文用官方编译发布的OpenCV Android SDK 3.4.1来进行演示(不含contrib库),contrib库需要自己编译,如何编译以后再写。

①opencv头文件

以我的为例,sdk下载在桌面,C:\Users\xy\Desktop\opencv-3.4.1-android-sdk\

将C:\Users\xy\Desktop\opencv-3.4.1-android-sdk\OpenCV-android-sdk\sdk\native\jni 文件夹内的include文件夹拷贝到工程C:\Users\xy\Desktop\CSDN\app\src\main\cpp目录下,这样以便C++编程时能使用OpenCV头文件

拷贝过去后对native-lib.cpp进行编辑引用头文件,尝试写个opencv语句,可以看到已经出现代码提示,如下图

当然此时还不能编译,因为还没有将opencv的库信息导入工程

②编辑CMakeLists.txt

推荐使用上面给出的2、3文章链接的方式导入opencv库信息,以我的sdk目录为例应该如下设置:

#参考 https://blog.csdn.net/u010677365/article/details/76922541

set(OpenCV_STATIC ON)#1
set(OpenCV_DIR C:/Users/xy/Desktop/opencv-3.4.1-android-sdk/OpenCV-android-sdk/sdk/native/jni)#2
find_package(OpenCV REQUIRED)#3
target_link_libraries( # Specifies the target library.
                       native-lib

                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib}
                       ${OpenCV_LIBS}#4
                        )


请注意下图sdk路径分隔符号表示方式为/而不是winows的\

配置CMakeLists完成后,同步gradle,会在工程android视图下面看到,被应用的库

理论上现在就可以编译了,编译试试。如下图,

到这里我当时就懵逼了,这也就是我前面说的很简单巨坑

③NDK编译报错的解决方法

更换工程NDK设置,不要使用AndroidStudio SDK管理器里面下载的NDK工具包

替换为R14或者R16的NDK包,为什么是R14或者R16?因为最新的R17也编译不了,说多了都是泪,这就是我这几天爬的坑!!!

自带工具下载的NDK不完整编译会报各种错误,较新的其他完整包如R17也不行,估计是OpenCV源码cmake配置的问题,R14和R16我验证过没有问题请放心使用。

附上NDK下载链接 https://developer.android.google.cn/ndk/downloads/older_releases

④编译工程

成功!!!

说明下:我推荐的上面3篇文章,有提到abi版本过滤设置,请根据你的目标环境设置app下的gradle

例如,只需要armeabi-v7a,可以启用图中注释部分

abiFilters 'armeabi-v7a'

另外如果除了opencv还有其他库要引入,请考虑使用jniLibs文件夹,并配合设置gradle。具体过程可以参见开头那三篇文章。

2018.05.30 工程源码:https://download.csdn.net/download/a390641326/10446257

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南七小僧

打赏后,可以添加微信一对一咨询

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值