前言
最近完成了Android上使用OpenCV进行图像拼接的功能,通过导入OpenCV的.so或.a库,JNI封装C++代码供Java层调用,同时在CMakeLists中指定自己需要的.a库以减少库的大小,毕竟我只用了拼接功能,其它诸如dnn、video等模块我都没用到。
在开始之前当然要把OpenCV Android SDK下载下来,推荐去GitHub下载,在OpenCV官网下载真是龟速,链接。
环境:OpenCV 3.3.1 、Android Studio 3.0
步骤
1.添加OpenCV-android-sdk
将OpenCV-android-sdk\sdk\native文件夹添加到项目中,这里我把native重命名为opencv,如下图:
其中3rdparty包含opencv使用的第三方库,jni/include包含opencv的头文件
,libs包含opencv编译好的动态库与静态库。
2.修改build.gradle
如图,添加红框中的内容,其中abiFilters 'armeabi'表示只生成armeabi架构的包,若不指定则会生成全部架构。
注意:确保你当前的工程已启用C++支持,如果没有就重新建一个项目并勾选Include C++ Support,我也尝试过创建普通Android工程,是build不过的,想启用C++支持也没找到方法,只好重新建一个包含C++支持的项目了。
3.修改CMakeLists.txt
# Sets the minimum version of CMake required to bu

本文介绍了如何在Android应用中集成OpenCV,并通过指定所需的.a库来减小库的大小。作者首先下载了OpenCV Android SDK,然后将其添加到项目中,接着在build.gradle中指定abiFilters以降低生成的包的架构。在CMakeLists.txt中,通过静态链接所需的OpenCV库实现了减小库大小的目标。最后,作者提到完成后的aar包大小为2.5MB,相比包含全部功能的libopencv_java3.so的10MB多,实现了显著的减小。
最低0.47元/天 解锁文章
482

被折叠的 条评论
为什么被折叠?



