200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > OpenCV Android以及扩展模块opencv_contrib的编译

OpenCV Android以及扩展模块opencv_contrib的编译

时间:2018-08-30 23:51:02

相关推荐

OpenCV Android以及扩展模块opencv_contrib的编译

OpenCV和OpenCV_contrib模块4.5.x版本的编译

环境准备:

Ubuntu 16.04.1,环境变量:

export ANDROID_HOME=~/work/android-sdk

export ANDROID_NDK_HOME=~/work/android-sdk/ndk/20.0.5594570

export JAVA_HOME=~/software/jdk1.8.0_171

cmake 版本,这里直接使用的是SDK中的cmake:

export PATH=~/work/android-sdk/cmake/3.6.4111459/bin:$JAVA_HOME/bin:$PATH

注意

这里SDK中不能有多个cmake版本,否则可能会出现下面的莫名其妙的错误。原因就是我在SDK目录中下载了一个更新的cmake版本3.18.1,这个问题出现后删掉新版本的cmake就可以了。

SDK initialized in 0 ms

FAILURE: Build failed with an exception.

* What went wrong:

A problem occurred configuring project ':face-detection'.

> Invalid revision: 3.18.1-g262b901

* Try:

Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output. Run with --scan to get full insights.

* Get more help at

在cmake配置完毕时会打印当前的配置信息,注意CMake:后面所示的版本号就是CMake build tool后面的版本。

-- General configuration for OpenCV 4.5.5 =====================================-- Version control:4.5.5-- -- Extra modules:--Location (extra): /build/master-contrib_pack-contrib-android/opencv_contrib/modules--Version control (extra):4.5.5-- -- Platform:--Timestamp: -12-25T04:26:00Z--Host: Linux 4.15.0-58-generic x86_64--Target: Android 1 armv7-a--CMake: 3.6.0-rc2--CMake generator: Ninja--CMake build tool: /opt/android/android-sdk.gradle/cmake/3.6.4111459/bin/ninja--Configuration:Release

将代码分别拉到opencv和opencv_contrib两个目录里,新建一个build目录作为编译用途。

-01-07 12:39:06:~/work/ocv $ tree -L 1.├── build├── build.txt├── opencv└── opencv_contrib3 directories, 1 file$ cmake -versioncmake version 3.6.0-rc2CMake suite maintained and supported by Kitware (/cmake).

跳转到build目录执行配置:

cmake -DOPENCV_ENABLE_NONFREE=ON -DBUILD_DOCS=OFF -DBUILD_TESTS=OFF -DANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-4.9 -DWITH_OPENCL=OFF -DBUILD_PERF_TESTS=OFF -DCMAKE_TOOLCHAIN_FILE=~/work/android-sdk/ndk/20.0.5594570/build/cmake/android.toolchain.cmake -DWITH_CUDA=OFF -DANDROID_NATIVE_API_LEVEL=21 -DANDROID_TOOLCHAIN=clang -DANDROID_STL=c++_static -DANDROID_ABI=armeabi-v7a -DANDROID_ARM_NEON=ON -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ../opencv

之后执行make -j4就可以了。等完全编译成功后执行make install 可在当前build目录生成一个install目录。

使用现成的发布版本

其实我本来就是想编译opencv_contrib扩展模块的,如果官方有发布带扩展模块的SDK,我也不会尝试着自己编译了。中间各种找,后来从官方编译日志上发现了配置编译方法。同时也发现了未发布的带扩展模块的SDK版本。

这是编译带扩展模块的编译历史列表:

Buildbot: master-contrib_pack-contrib-android

OpenCV编译机器人打包发布目录:

/buildbot/export/opencv_releases/4_x_pack-android/

我从中发现了4.5.5的配置编译历史记录:Buildbot: master-contrib_pack-contrib-android Build #11369

从中可以找到4.5.5的打包版本(这个链接在发布了更新的版本后可能会失效,但是查找新版本的方法同上):Directory listing for /export/opencv_releases/master-contrib_pack-contrib-android/1225-042541--11369/

4.5.4的配置编译历史记录:Buildbot: master-contrib_pack-contrib-android Build #11357

从上面的编辑记录里也可以看到OpenCV源码库中有一键编译打包Android版本SDK的脚本,具体执行方法:

python ../opencv/platforms/android/build_sdk.py --ndk_path $ANDROID_NDK_HOME --sdk_path $ANDROID_HOME --extra_modules_path ../opencv_contrib/modules . ../opencv

题外话

另外多说一点,在Windows上也可以使用git bash命令行编译,不需要再额外安装MSYS。亲测有效!我的系统是Windows 7。

最后贴个图吧。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。