环境:

系统: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。

目录结构是这样的:

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,在打开一个平台的文件夹,

编译成功了。

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

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

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

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

更多相关文章

  1. 使用 Intel HAXM 为 Android(安卓)模拟器加速,媲美真机
  2. AS 配置使用NDK
  3. Gradle Build加速
  4. cocos2dx - 部署到android真机上错误整理
  5. Android(安卓)Studio 更新0.6.1出现的问题
  6. 用SVN下载goolge android的开源项目
  7. 编译源码生成的SDK,创建android project 没有proguard.cfg问题
  8. android之wifi移植全过程
  9. 其它

随机推荐

  1. Innodb中mysql快速删除2T的大表方法示例
  2. Mysql优化order by语句的方法详解
  3. 关于case when语句的报错问题详解
  4. Mysql中禁用与启动触发器教程【推荐】
  5. 解决MySQL 5.7中定位DDL被阻塞的问题
  6. MySQL表结构变更你不可不知的Metadata Lo
  7. 如何修改Mysql中group_concat的长度限制
  8. MySQL删除表时I/O错误的原因分析与解决
  9. MySQL中通过EXPLAIN如何分析SQL的执行计
  10. MySQL8下忘记密码后重置密码的办法(MySQL