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

2023-11-16

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 https://help.gradle.org

在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:                   2021-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目录作为编译用途。

2022-01-07 12:39:06:~/work/ocv  
$ tree -L 1
.
├── build
├── build.txt
├── opencv
└── opencv_contrib

3 directories, 1 file

$ cmake -version
cmake version 3.6.0-rc2

CMake suite maintained and supported by Kitware (kitware.com/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编译机器人打包发布目录:

https://pullrequest.opencv.org/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/20211225-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

Nightly build releases:

https://pullrequest.opencv.org/buildbot/export/opencv_releases/

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

最后贴个图吧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV Android以及扩展模块opencv_contrib的编译 的相关文章

随机推荐

  • 【Android】Android工具函数整理

    import android app Activity import android app ActivityManager import android app KeyguardManager import android content
  • TensorRT详细入门指南

    前言 大名鼎鼎的TensorRT有多牛逼就不多说了 因为确实很好用 作为在英伟达自家GPU上的推理库 这些年来一直被大力推广 更新也非常频繁 issue反馈也挺及时 社区的负责人员也很积极 简直不要太NICE 只是TensorRT的入门门槛
  • 比较器参数之Offset voltage(Vos)

    offset voltage 最关键的直流规格参数是输入失调电压 Vos 由于比较器的 Vos产生一个额外的直流电压与串联同相输入 它对比较器的输出阈值改变状态 让我们分析一个非反相具有三个不同 Vos 值的比较器电路更好地理解效果 请记住
  • paddle window10环境下使用conda安装

    话 一开始也是根据别人的文章 疯狂报错 我的建议是自己先根据文档进行搭建 pip 和 conda两种方式都进行了尝试 个人更推荐conda 使用pip好像会出现版本不兼容的问题 其次是会出现要大量手动pip install 的情况 cond
  • 使用coloc 进行 QTL 共定位Colocalization

    GWAS找到显著信号位点后 需要解释显著信号位点如何影响表型 常见的一个解释方法是共定位分析 主流的共定位分析包括 1 GWAS和eQTL共定位 2 GWAS和sQTL共定位 3 GWAS和meQTL共定位 4 GWAS和pQTL共定位 其
  • win7 系统安装图解教程

    链接 http www 360doc com content 10 0720 11 1495415 40258931 shtml
  • 【经典】SpringBoot thymeleaf模板引擎——WEB开发模板引擎

    模板引擎 可以使业务数据和用户界面分离 通过模板引擎自动生成一个HTML文档 简单的说可以理解为 分离数据和界面 简化网页开发 现在主流的模板引擎有Jsp Velocity Beetl Rocker Freemarker thymeleaf
  • ROS学习笔记16:机器人系统建模与仿真

    一 概述 1 机器人系统仿真 是通过计算机对实体机器人系统进行模拟的技术 在 ROS 中 仿真实现涉及的内容主要有三 对机器人建模 URDF 创建仿真环境 Gazebo 以及感知环境 Rviz 等系统性实现 1 仿真优势 低成本 高效 高安
  • Uncaught SyntaxError: Invalid shorthand property initializer at new Function () a

    data options valueField id textField name method get 将method get 等于改为冒号 或者都是一些其他的原因 比如单引号 忘了写逗号
  • Comate: 百度智能云的代码助手

    Comate是什么 Comate是百度智能云推出的一项革命性代码辅助工具 它基于文心大模型的强大理解和推理能力 旨在提高开发者的研发效率 这个全新的工具可以实现代码的快速补齐 自然语言推荐代码和自动查找代码错误等功能 为程序开发提供了全新的
  • vscode安装

    博客 https zhuanlan zhihu com p 106357123 https code visualstudio com download
  • [创业之路-47] :动态股权机制 -2- 多轮融资股权稀释后,大股东保留控制权的常见套路

    正常来说一个蒸蒸日上的公司或者被看好的公司 都要面临融资的问题 融资之后 股权就会发生比较大的变化 多轮融资之后呢 再次引进新的合伙人呢 那时候的股权肯定低于51 甚至低于34 这时候靠什么掌控公司 1 有限合伙平台模式GP VS LP 同
  • windows安装pm2

    pm2是开源的进程管理器 可用于管理您的nodejs项目等 前段时间看到同事使用到此工具 今日特地学习安装使用 安装流程如下 1 确保你电脑安装了npm 可以通过npm v命令查看 npm v 2 安装pm2 命令 npm install
  • 程序员代码打字练习题库

    创建一个新的txt文件 将本文内容全选 粘贴 保存 然后导入金山打字通 即可练习程序员常用词汇 推荐使用金山打字通 英文文章练习 自定义课程 导入txt文件 保存 接下来你就可以联系打字了 path class classpath publ
  • 绕过protected方法的调用(包级共享)

    A类在a包 package a import b B public class A protected void sys System out println A protected sys方法 public static void mai
  • [Activiti 资料]Activiti 画图工具(activiti-designer,actiBPM,activiti-app)

    1 eclipse eclipse的画流程工具 activiti designer 1 1 直接下载Eclipse 或者下载已经安装了activiti designer的eclipse 既然你下载到了 怎么也礼节性的感谢一下哈 链接 htt
  • ENVI入门系列教程---二、图像分析---13. 遥感动态监测

    every blog every motto God helps those who help themselves https blog csdn net weixin 39190382 type blog 0 前言 遥感变化检测就是从不
  • EasyExcel,让excel导入导出更加简单

    EasyExcel EasyExcel是一个基于Java的简单 省内存的读写Excel的开源项目 在尽可能节约内存的情况下支持读写百M的Excel github地址 https github com alibaba easyexcel JA
  • 数据降维算法

    文章目录 效果一览 文章概述 部分源码 参考资料 效果一览 文章概述 数据降维算法 Matlab 基于局部费歇尔判别 LFDA 的分类数据降维可视化 部分源码
  • OpenCV Android以及扩展模块opencv_contrib的编译

    OpenCV和OpenCV contrib模块4 5 x版本的编译 环境准备 Ubuntu 16 04 1 环境变量 export ANDROID HOME work android sdk export ANDROID NDK HOME