android平台下opencv的编译--包含扩展模块

由于项目需要使用安卓平台下opencv的扩展库,对于通用的opencv库, opencv官网提供了android的SDK

但未能提供扩展库,因此需要自己进行源码编译。本文记录android平台下opencv及其扩展库的交叉编译。

前提:主机已安装android-ndk交叉编译器

安装依赖环境

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config

1、源码下载

下载opencv,可手动下载源码和拓展模块源码,解压后分别命名opencv和opencv_contrib文件

Releases - OpenCV

GitHub - opencv/opencv at 4.8.0

GitHub - opencv/opencv_contrib: Repository for OpenCV's extra modules

2、源码编译

设置编译脚本build-opencv-for-android.sh

#!/bin/bash
NDK_ROOT="${1:-${ANDROID_NDK_HOME}}"
SHELL_PATH=$(pwd)echo $NDK_ROOT### ABIs setup
declare -a ANDROID_ABI_LIST=("arm64-v8a")### path setup
INSTALL_DIR="${SHELL_PATH}/android_opencv"
rm -rf "${INSTALL_DIR}/opencv"### Make each ABI target iteratly and sequentially
API_LEVEL=21
for i in "${ANDROID_ABI_LIST[@]}"
doANDROID_ABI="${i}"echo "Start building ${ANDROID_ABI} version"TEMP_BUILD_DIR="${SHELL_PATH}/build/android_${ANDROID_ABI}"# ### Remove the build folder first, and create itrm -rf "${TEMP_BUILD_DIR}"mkdir -p "${TEMP_BUILD_DIR}"cd "${TEMP_BUILD_DIR}"OPENCV_PATH="${SHELL_PATH}/opencv"OPENCV_CONTRIB_PATH="${SHELL_PATH}/opencv_contrib"INSTALL_PATH=${SHELL_PATH}/out/mkdir -p "${INSTALL_PATH}"/usr/cmake-3.23.0-rc2-linux-x86_64/bin/cmake -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \-DCMAKE_TOOLCHAIN_FILE="${NDK_ROOT}/build/cmake/android.toolchain.cmake" \-DANDROID_TOOLCHAIN=clang++ \-DANDROID_NDK="${NDK_ROOT}" \-DANDROID_NATIVE_API_LEVEL=${API_LEVEL} \-DANDROID_ABI="${ANDROID_ABI}" \-DOPENCV_EXTRA_MODULES_PATH=${OPENCV_CONTRIB_PATH}/modules \-DCMAKE_INSTALL_PREFIX=${INSTALL_PATH} \-D BUILD_ANDROID_PROJECTS=OFF\-D WITH_CUDA=OFF \-D WITH_MATLAB=OFF \-D BUILD_ANDROID_EXAMPLES=ON \-D BUILD_DOCS=OFF \-D BUILD_PERF_TESTS=OFF \-D BUILD_TESTS=OFF \${OPENCV_PATH}# # Build itmake -j4# # Install itmake install/strip# ### Remove temp build foldercd "${SHELL_PATH}"# rm -rf "${TEMP_BUILD_DIR}"echo "end building ${INSTALL_PATH} version"
done

将build-opencv-for-android.sh、opencv和opencv_contrib文件放置于同一目录下

导出NDK安装路径环境变量

export ANDROID_HOME=/usr/android-ndk-r25c/
export ANDROID_NDK_HOME=/usr/android-ndk-r25c/
./build-opencv-for-android.sh

等待编译完成,完成后,编译成功如下,库文件在 ./out/sdk/native/staticlibs/

本文在编译脚本中只设置了安卓arm64-v8a硬件平台的编译,如有需要可自行修改。

问题:编译完成后,不知道为什么,编译没有报错,但在3rdparty目录下并未编译 libtbb.a,可直接使用将官网sdk中的libtbb.a。

参考

GitHub - ShikinChen/build-opencv-for-android: 编译opencv的Android库的脚本

GitHub - tzutalin/build-opencv-for-android: An interactive script to download and build OpenCV and OpenCV contrib for Android

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/810156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

玩美移动珠宝虚拟试戴解决方案引入glTF 2.0格式支持

领先的AIAR美妆和时尚科技解决方案提供商,以及"美丽AI"解决方案开发商 — 玩美移动于今日宣布,其AI珠宝虚拟试戴解决方案升级版本,性能得以显著提升。通过此次更新,玩美移动系统现可支持glTF 2.0(图形库传输…

启明智显技术分享|ESP32-C3助力Model 3C芯片86盒彩屏开发板实现3MB波特率OTA程序升级和单独图片升级

在物联网快速发展的今天,彩屏显示作为人机交互的重要一环,其显示效果和升级便利性成为了衡量产品竞争力的关键指标。而Model 3C(以下简称M3C芯片)与ESP32-C3的结合,无疑为物联网彩屏领域应用奠定了坚实的基石。 M3C芯片 是启明智…

碳视野 | 今后五年国家重点支持三类双碳项目!

一、政策背景 4月8日,国家发展改革委印发《节能降碳中央预算内投资专项管理办法》(以下简称《办法》),明确了专项资金重点支持范围和标准,重点支持重点行业和重点领域节能降碳、循环经济助力降碳等方向,重点支持内容包…

Seata框架实现分布式事务(一)CAP理论

1、什么是事务 事务是指一系列数据库操作,它们被看作是一个逻辑单元,并且要么全部成功地执行,要么全部失败地回滚到初始状态,以确保数据的一致性和完整性。事务具有以下四个特性,通常被称为 ACID 特性: 所…

VMware安装kylin系统

安装成功画面 1.点击如下链接,下载iso镜像 openKylin开源操作系统 选择图片中的镜像进行下载 此处一定要选择稍后安装系统

常用特征分箱算法

特征分箱是构建信用评分过程中最重要的一个环节。特征分箱是对连续变量离散化的一种简称,对于连续型变量,需要对其连续值进行拆分,并进行后续的分箱调整工作; 对于离散型变量,通常要根据每个离散值计算其坏样本占比或…

创新实训2024.04.11日志:self-instruct生成指令

1. 参考文献 代码:https://github.com/yizhongw/self-instruct论文:https://arxiv.org/abs/2212.10560 2. 前沿论文阅读 2.1. self-instruct技术的优势 作者在文章中提到: The recent NLP literature has witnessed a tremendous amount …

时光清浅,百事从欢

裙身主图案采用寓意丰富的石榴印花石榴花开红火,枝叶茂盛恰好契合“时来运转”的主题希望宝贝们都能如石榴般坚韧生长,好运连连裙型设计深蕴国风美学,融合现代剪裁工艺将古典韵味与时尚元素完美交融领口处巧妙运用中式立领设计既保留了传统服…

SketchBook2014 下载地址及安装教程

SketchBook是一款专业级别的绘图与绘画软件。它提供了丰富的绘画工具和创意功能,适用于艺术家、插画师、设计师和数字艺术爱好者。SketchBook具有直观的用户界面,简单而强大的绘制工具,能够帮助用户在数字平台上创造出精美的艺术作品。 Sket…

【软件测试之因果图法】

【软件测试之判断表法】(蓝桥课学习笔记) 1、因果图法的概念 因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种情况的组合。因果图(Cause-Effect-Graphing)提供了把规则转…

水电智能远程抄表系统

水电智能远程抄表系统是一种应用先进技术实现水电抄表的智能化管理系统,通过远程抄表、数据传输和智能分析,实现了对水电使用情况的实时监测和管理。本文将从系统特点、构成以及带来的效益三个方面展开介绍。 系统特点 1.远程抄表:系统能够…

Day37:LeedCode 738.单调递增的数字 968.监控二叉树 蓝桥杯 翻转

738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 10 输出: 9 思路: 假设这个数是98,…

HCIP-Datacom H12-831 题库补充(4/12)

2024年 HCIP-Datacom&#xff08;H12-831&#xff09;最新题库&#xff0c;完整题库请扫描上方二维码&#xff0c;持续更新。 以下关于OSPF Sham Link的描述&#xff0c;错误的是哪一项&#xff1f; A&#xff1a;为了使VPN流量通过MPLS VPN骨干网转发&#xff0c;Sham Link的路…

docker 安装初体验

文章目录 前言简介一、准备工作1.1 安装docker1.2 查看版本1.3 启停docker 二、docker命令介绍2.1 查看doeker容器2.2 查看doeker镜像2.3 docker基本命令 三、下载镜像、创建容器3.1 下载centos镜像3.2 测试运行镜像3.3 将宿主机的文件拷贝到容器上3.4 将容器内的文件拷贝到宿主…

RA4000CE为汽车动力传动系统提供解决方案

目前汽车电气化的水平越来越高&#xff0c;其中比较显著的一个发展方向就是将发动机管理系统和自动变速器控制系统&#xff0c;集成为动力传动系统的综合控制(PCM)。作为汽车动力的核心部件&#xff0c;通过电子系统的运用&#xff0c;将外部多个传感器和执行环节的数据进行统一…

深度学习pytorch实战第P3周--实现天气识别

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 引言 1.复习上周 深度学习pytorch实战-第…

一文了解HTTPS的加密原理

HTTPS是一种安全的网络通信协议&#xff0c;用于在互联网上提供端到端的加密通信&#xff0c;确保数据在客户端&#xff08;如Web浏览器&#xff09;与服务器之间传输时的机密性、完整性和身份验证。HTTPS的加密原理主要基于SSL/TLS协议&#xff0c;以下详细阐述其工作过程&…

常见程序故障排查及程序配置

文章目录 故障排查基础关机/重启/注销系统信息和性能查看磁盘和分区⽤户和⽤户组⽹络和进程管理常⻅系统服务命令⽂件和⽬录操作⽂件查看和处理打包和解压RPM包管理命令YUM包管理命令DPKG包管理命令APT软件⼯具 分析工具JDK自带分析工具jpsjstatjinfojmapjhatjstackjcmd GUI分析…

QT:QMainWindow、ui界面、资源文件的添加、信号和槽

1.练习&#xff1a;使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(…

第6章 6.3.1 正则表达式的语法(MATLAB入门课程)

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 正则表达式可以由一般的字符、转义字符、元字符、限定符等元素组…