OpenCV - Android Studio 中集成Opencv环境(包含opencv_contrib部分)
我在上一篇博客中说到了在Android中集成OpenCV,但是那个版本的OpenCV是没有SIFT和SURF算法的,因为这些算法是受专利保护的,所以并没有被包含在预编译库中,所以如果想要使用SIFT和SURF算法,需要自己来编译OpenCV Android SDK。在OpenCV 2.4.x版本中,这些算法被包含在nonfree模块中;从3.0版本开始,用于图像特征匹配的一些算法(比如SIFT,SURF,BRIEF,FREAK等)被转移到了opencv_contrib项目的xfeatures2d模块中。
我们需要从github上down下opencv_contrib部分内容,将其编译进去,github地址:https://github.com/opencv/opencv_contrib,注意需要与你下载的OpenCV for Android库相匹配。关于opencv_contrib库的编译,我在Windows和Linux(Ubuntu)中编译成功(这部分我会在后面的博客中提及),但是在Android平台的编译遇到我了极大的困难。我百度了很久,找到了一篇相对靠谱的博文:http://johnhany.net/2016/07/build-opencv-manager-for-android-on-ubuntu/,我按照作者所说一步步进行编译,最终都没有成功。不过万幸的是,作者在文章的后面给出了它编译成功的OpenCV Android SDK,是OpenCV3.2版本的,这里我也给出链接:https://pan.baidu.com/s/1kVOejLt,再次感谢作者。不过可惜的是,作者当初编译的时候仅仅解锁了SIFT、SURF和FREAK,并没有解锁BRIEF,可能不能满足所有人的要求,这里我也希望如果有大神编译成功了,将成功后的库发我一份。
到这里,我们已经拥有了编译有opencv_contrib部分的Android OpenCV SDK,目录结构如下:
因为我们需要用到cmake,ndk等工具,所以需要预先打开SDK Manager进行管理(建议安装SDK Manager当中提供的NDK,便于管理),
然后我们在Android Studio中新建一个项目,新建的时候注意勾选Include C++ Support,之后一直下一步即可。
进入项目后,我们发现项目的目录结构发生了一定变化,main目录下多出了一个cpp目录,而且多出了一个CmakeList文件(Android Studio2之后,我们可以通过cmake管理ndk调用C++,而不用在通过Android.mk文件,这无疑是一个福音)。
然后我们参照我上一篇博客的操作,点击File->New->Import Module添加库,点击File->Project Structure添加依赖,将OpenCVLibrary的build.gradle文件中的一下参数修改为与app的build.gradle文件中相同。
我们要将编译得到的库中sdk->native->libs中的文件全部拷贝到项目的main目录下,重命名为:jniLibs
将编译得到的库中sources->opencv_contrib->modules->xfeatures2d->src目录下的freak.cpp,precomp.hpp,sift.cpp,surf.cpp,surf.hpp,xfeatures2d_init.cpp共6个文件拷贝到app->src->main->cpp文件夹中。其中,precomp.hpp文件需要做如下修改:
注释掉第52-53行:
注释掉第62行的
然后,我们需要修改CmakeList.txt文件为:
最后,我们需要修改app/build.gradle文件为:
至此,我们就可以在Android中使用SIFT和SURF算法啦,代码的话,转道www.baidu.com啦~~~
__EOF__

本文链接:https://www.cnblogs.com/fx-blog/p/8206737.html
关于博主:真正的高贵不是优于别人,而是优于过去的自己!
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)