Compile opencv+opencv_contrib lib for Android

版权声明:本文为博主原创文章,转载必须注明出处!! https://blog.csdn.net/qq_34902522/article/details/81533145

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

猜你喜欢

转载自blog.csdn.net/qq_34902522/article/details/81533145