Compile opencv+opencv_contrib lib for Android

Compile opencv+opencv_contrib lib for Android

序言

使用opencv来进行功能开发的话,可以通过在opencv的官方网上下载对应平台的SDK,地址如下: https://opencv.org/releases.html .
但是,官网提供的sdk里面的功能有限,一些高级的功能模块如:Tracking,Xfeatures2d等,不包含在内,这些功能在opencv_contrib里面,所以,我们要想使用这些功能的话.官方的库就不能满足我们了,我们需要自己根据opencv的源码来编译我们需要的,适合Android平台的库.

环境

Ubuntu 14

步骤

1.新建文件夹用来存储编译所需源码.如:mkdir opencv_build.新建opencv_build文件夹.
2.cd 进入opencv_build文件夹,把opencv和opencv_contrib仓库的代码clone下来,仓库链接如下: https://github.com/opencv/opencv , https://github.com/opencv/opencv_contrib. 然后分别进入这两个仓库,切换到你需要的分支,并把代码更新到最新.这边我是checkout 到了 3.4 分支.(ps:两个库需要切换到相同的分支).
cd opencv/
git checkout 3.4
git pull

3.创建个文件夹用来存储编译好的文件,如:我这边是在opencv里面新建了一个build文件夹用来存储的.
cd opencv/
mkdir build
4.确保你系统上该有的文件:ninja,libcurl4-openssl-dev,android sdk tools 的版本要用25.2.5.(如果已经有的可以跳过此步骤)
ninja安装:

apt-get install ninja-build

libcurl4-openssl-dev 安装:

sudo apt-get install libcurl4-openssl-dev

   ./bootstrap  --system-curl

   make

sudo make install

android sdk tools 25.2.5下载
https://dl.google.com/android/repository/tools_r25.2.5-linux.zip 文件下载下来后放入sdk目录下替换之前的tools文件. SDK Tools error

5.cd /opencv/platform/android 目录,会发现有一个build_sdk.py文件,这是官方提供的使用Python写的一个构建库的脚本.我们运行这个脚本即可.
6.运行的命令: ./build_sdk.py –ndk_path [ndk-path] –sdk_path [sdk-path] –extra_modules_path [opencv_contrib 里的 modules的路径] [存储编译后文件的目录路径] [opencv的路径]

NOTE:
使用py脚本的时候,一些变量的位置一定要指定清楚.之前有遇到ndk breaken的问题.

7.编译好的库文件在o4a文件夹下的install目录下或者与o4a文件夹同级的Opencv-android-sdk.

注意

虽然编译的命令比较简单,但是并不是执行了编译命令就一定会编译成功的,编译的过程会出现一些常见的问题:

ninja 要安装好 否则会遇到找不到的error **CMake Error: CMake was unable to find a build program corresponding to “Ninja”.

注意 我们从编译脚本关联的cmake file 文件中得知.Android NDK 版本要求 r5-r10d ,具体如下:[-r10d -r10c -r10b -r10 -r9d -r9c -r9b -r9 -r8e -r8d -r8c -r8b -r8 -r7c -r7b -r7 -r6b -r6 -r5c -r5b -r5]
且r10以下版本的ndk不支持编译64位的ABIs 如: “arm64-v8a” ,”x86_64”,”mips64”

这边有编译好的最新的库,不想自己编译的,直接可以打过来用 https://github.com/MRYangY/opencv-contrib-lib4Android

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这个错误是由于编译过程中出现了问题导致的。根据引用\[1\]、\[2\]和\[3\]中的信息,可以看出这些错误是由于编译opencv时出现的问题。具体来说,引用\[1\]和\[2\]中的错误是由于在编译过程中出现了一些文件或目标的错误,而引用\[3\]中的错误是由于在编译python3模块时出现了错误。根据引用\[3\]中提到的解决方案,可以尝试打开cv2.cpp文件并在885行附近添加(char *)来解决问题。然而,对于你提到的最后一个错误,由于缺少相关的引用内容,我无法提供更具体的解决方案。建议你查找相关的错误信息和解决方案,或者向更专业的技术论坛或社区寻求帮助。 #### 引用[.reference_title] - *1* [make[2]: *** [modules/gapi/CMakeFiles/opencv_gapi.dir/build.make:869: modules/gapi/CMakeFiles/opencv](https://blog.csdn.net/AcetylcholineACh/article/details/129970610)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [安装opencv3.2.0 cmake出现 CMakeFiles/Makefile2:1264: recipe for target 'modules/cudev/test/...](https://blog.csdn.net/qq_33202928/article/details/80079485)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [树莓派安装opencv报错:make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:56...](https://blog.csdn.net/qq_44357371/article/details/105966714)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值