ubuntu16.04编译opencv for Android

27 篇文章 5 订阅
26 篇文章 0 订阅

最新版请看 https://blog.csdn.net/lj402159806/article/details/85780711

安装cmake

参考这篇博客ubuntu安装CMake的几种方式中的软链接Android Sdk中的CMake

下载opencv源码

直接在github clone最新源码
https://github.com/opencv/opencv/tree/master
或者在官网下载指定版本的源码
http://opencv.org/releases.html

编译opencv源码

进入源码目录新建一个opencvAndroid.sh脚本文件,内容如下

#!/bin/sh

rm -rf android_build
mkdir android_build
cd android_build

cmake -DANDROID_SDK=/home/lingzhitech/Android/Sdk -DANDROID_NDK=/home/gavinandre/Android/Sdk/ndk-bundle -DANDROID_STL=c++_shared -DCMAKE_TOOLCHAIN_FILE=/home/gavinandre/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DCMAKE_SYSTEM_VERSION=21 -DCMAKE_ANDROID_ARCH_ABI="armeabi-v7a" -DCMAKE_ANDROID_ARM_NEON=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_ANDROID_STL_TYPE="c++_shared" -DBUILD_opencv_world=ON -DBUILD_ZLIB=ON  $@ ..

cmake --build . --config Release

-DXXXXXX是指定Android交叉编译工具链中的一些参数
需要注意两点:
1.建议指定DANDROID_STL和DCMAKE_ANDROID_STL_TYPE为c++_shared,因为当使用c++11和gnustl_shared来编译时,NDK缺少一些函数,参考:https://stackoverflow.com/questions/22922961/c11-cmath-functions-not-in-std-namespace-for-android-ndk-w-gcc-4-8-or-clang-3
2.指定CMAKE_BUILD_TYPE和config时为Release,这样会开启O3优化,在使用opencv的一些函数时会大幅度提升效率

然后运行该脚本

./opencvAndroid.sh

之后等待编译完成即可

编译完成后可以在android_build目录下找到编译完的静态库文件
opencv库在:android_build/lib/下
第三方库在:android_build/3rdparty/lib/下

出现如下错误的话

/usr/include/features.h:391:10: fatal error: 'gnu/stubs.h' file not found

说明可能是64位系统缺少32位依赖库,使用如下命令安装

sudo apt install libc6-dev-i386
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值