【OpenCV】编译opencv+opencv_contrib sdk for android(附编译好的版本)

环境:

系统:ubuntu16.04

opencv:3.2.0,点击链接下载

opencv_contrib:3.2.0,点击链接下载

android tools:r25.2.5,点击链接下载

android ndk:r15c,点击链接下载

一、安装依赖包

网上找的,不知道那些是必须的。为了避免后面编译错误,全部安装了。

 sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev  libjpeg-dev libpng-dev libtiff5-dev  libdc1394-22-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install ffmpeg

二、编译sdk

下载一位大神写好的脚本:

git clone https://github.com/tzutalin/build-opencv-for-android.git

下载下来之后,里面包含两个脚本。

其中一个是setup.sh,这个脚本的功能是使用git下载android-ndk,opencv和opencv_contrib。

因为git下载的是最新版本的opencv源码,下载下来之后要切换分支。当然这个脚本会帮你做,它默认下载的是3.1.0版本,所以你需要这样使用stup.sh 3.2.0,给脚本传递一个参数设置版本,当然你也可以直接在脚本里更改默认版本。

但是我不建议使用这个脚本来下载最新版的opencv源码然后切换分支,后续编译会出很多错误,改都不不过来。直接去github上下载opencv3.2.0和opencv_contrib3.2.0的源码,然后解压到build-opencv-for-android文件夹下面,分别重命名为opencv和opencv_contrib。

目录结构是这样的:

【OpenCV】编译opencv+opencv_contrib sdk for android(附编译好的版本)_第1张图片

android-ndk我也是自行下载的。

下面设置几个环境变量:

export ANDROID_SDK_TOOLS="$ANDROID_SDK_TOOLS:/home/tj/work/software/tools"
export ANDROID_NDK_ROOT="$ANDROID_NDK_ROOT:/home/tj/work/software/android-ndk-r15c"

ANDROID_SDK_TOOLS是android tools:r25.2.5解压的路径,ANDROID_NDK_ROOT是android ndk:r15c的解压路径。

接下来打开build-android-opencv.sh这个脚本,

这里可以更改要编译的目标平台,我把mipsel和mips64el删掉了。

一切就绪,执行build-android-opencv.sh,等待编译完成。

编译完成后会在当前目录下生成一个android_opencv文件夹。

进去找到sdk/native/libs,在打开一个平台的文件夹,

【OpenCV】编译opencv+opencv_contrib sdk for android(附编译好的版本)_第2张图片

编译成功了。

编译好的sdk可以到这里下载。

使用时,打开/sdk/native/jni/include\opencv2/core/private.hpp

【OpenCV】编译opencv+opencv_contrib sdk for android(附编译好的版本)_第3张图片

将47-49行和52行注释掉。

/sdk/native/jni/include\opencv2/core/private.cuda.hpp也是同样的处理方式。

你可能感兴趣的:(计算机视觉,android,opencv)