什么是“MultiArch”
OpenCV 可能会使用大量第三方库进行视频和图像解码、渲染、加速和复杂的数学算法。CMake 在构建主机上找到第三方组件,交叉编译允许为外部架构或操作系统构建 OpenCV,但我们失去了庞大的组件世界,必须单独交叉编译每个依赖项并在 OpenCV 构建期间指向它。
Debian/Ubuntu MultiArch 有助于解决这个问题。它允许在主机系统上安装多个外部架构库,并在 OpenCV 依赖项解析期间使用它们。
警告
- 遵循这些步骤将使您的 Linux 环境有点脏。如果可能,最好使用 VM 或容器(例如 Docker)。
- 本教程要求主机和目标使用相同的 Ubuntu 版本。不要对外部库依赖使用/混合不同的版本。
- 好:主机和目标均为 23.04。
- 好:主机和目标均为 23.10。
- 不好:主机为 23.04,目标为 23.10。
- 不好:主机是 23.10,目标是 23.04。
- 本教程可用于 Debian 及其衍生产品,如 Raspberry Pi OS。请进行任何必要的更改。
下载工具
安装必要的工具和工具链以进行交叉编译。
- 基本上需要 git、cmake、pkgconf 和 build-essential。
- ninja-build 是为了减少编译时间(选项)。
- crossbuild-essential-armhf 是 armv7 目标的工具链包。
- crossbuild-essential-arm64 是 aarch64 目标的工具链包。
sudo apt 更新 -ysudo apt 安装 -y \git \cmake \pkgconf \构建必不可少的\忍者构建 \crossbuild-essential-armhf \交叉构建基本 arm64如果要启用 Python 3 包装器,也请安装这些包。
sudo apt 安装 -y \python3-最小 \python3-numpy
工作文件夹结构
在本教程中,使用以下工作文件夹结构。
/家+ KMTR - 请替换您的帐户名称。+ 工作+ opencv - 源代码,从 GitHub 克隆+ opencv_contrib - 源代码,从 GitHub 克隆+ build4-full_arm64 - 工件(用于 aarch64 目标),由 cmake 创建+ build4-full_armhf - 工件(用于 armhf 目标),由 cmake 创建
- 在主目录下创建工作文件夹。
- 将 OpenCV 和 OpenCV Contrib 从存储库克隆到工作目录。
cd ~mkdir 工作CD作品git clone --depth=1 https://github.com/opencv/opencv.gitgit clone --depth=1 https://github.com/opencv/opencv_contrib.git
更新 apt 和 dpkg 设置
这些步骤在主机上执行。
apt
并且是 Ubuntu 和 Debian 中使用的包管理系统。dpkg
以下是使用 MultiArch 的设置步骤。
步骤 1。为 arm64 和 armhf 添加 apt source
执行以在文件末尾添加外部 arch 库。sudo apt edit-sources
示例 1:适用于 Ubuntu 23.04 的 arm64 和 armv7
deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports 月球主限制deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports lunar-updates main restricteddeb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports 月球宇宙deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports 月球更新宇宙deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports 月球多元宇宙deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports 月球更新多元宇宙deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports 月球后港主要受限宇宙多元宇宙deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports 月球安全主要受限制deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports 月球安全宇宙deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports 月球安全多元宇宙示例 2:适用于 Ubuntu 23.10 的 arm64 和 armv7
deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports mantic main restricteddeb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports mantic-updates main restricteddeb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports mantic universedeb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports mantic-updates universedeb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports mantic 多元宇宙deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports mantic-updates 多元宇宙deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports mantic-backports main restricted universe multiversedeb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports mantic-security main restricteddeb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports mantic-security universedeb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports mantic-security 多元宇宙
第2步。更新 apt 数据库
更新 apt 数据库以应用新的 apt 源。
执行。sudo apt update
第 3 步。更新 dpkg 设置
更新 dpkg 设置以支持外部架构。
执行和/或 .sudo dpkg --add-architecture arm64
sudo dpkg --add-architecture armhf
sudo dpkg --add-architecture arm64sudo dpkg --add-architecture armhf
sudo dpkg --print-architecture
显示了什么是主机体系结构。sudo dpkg --打印架构AMD64的并显示支持哪些外部架构。
sudo dpkg --print-foreign-architectures
sudo dpkg --print-foreign-architecturesarm64的阿姆赫夫
确认工作正常 pkg-config
在 MultiArch 中,每个架构的几个共享库和 pkg-config 信息都存储在 /usr/lib 中。
/usr+ 库+ aarch64-linux-gnu - arm64 的共享库+ pkgconfig - arm64 库的 pkg-config 文件+ arm-linux-gnueabihf - armhf 的共享库+ pkgconfig - armhf 库的 pkg-config 文件+ 分享+ pkgconfig - pkg-config 文件(用于头文件)使用 和 选项确认工作。
pkg-config
PKG_CONFIG_PATH
PKG_CONFIG_LIBDIR
PKG_CONFIG_SYSROOT_DIR
对于 aarch64:
PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig:/usr/share/pkgconfig \PKG_CONFIG_LIBDIR=/usr/lib/aarch64-linux-gnu \PKG_CONFIG_SYSROOT_DIR=/ \pkg-config --列表-all对于 ARMv7:
PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig \PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf \PKG_CONFIG_SYSROOT_DIR=/ \pkg-config --列表-all
在线教程
- 麻省理工学院人工智能视频教程 – 麻省理工人工智能课程
- 人工智能入门 – 人工智能基础学习。Peter Norvig举办的课程
- EdX 人工智能 – 此课程讲授人工智能计算机系统设计的基本概念和技术。
- 人工智能中的计划 – 计划是人工智能系统的基础部分之一。在这个课程中,你将会学习到让机器人执行一系列动作所需要的基本算法。
- 机器人人工智能 – 这个课程将会教授你实现人工智能的基本方法,包括:概率推算,计划和搜索,本地化,跟踪和控制,全部都是围绕有关机器人设计。
- 机器学习 – 有指导和无指导情况下的基本机器学习算法
- 机器学习中的神经网络 – 智能神经网络上的算法和实践经验
- 斯坦福统计学习
有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
人工智能书籍
- OpenCV(中文版).(布拉德斯基等)
- OpenCV+3计算机视觉++Python语言实现+第二版
- OpenCV3编程入门 毛星云编著
- 数字图像处理_第三版
- 人工智能:一种现代的方法
- 深度学习面试宝典
- 深度学习之PyTorch物体检测实战
- 吴恩达DeepLearning.ai中文版笔记
- 计算机视觉中的多视图几何
- PyTorch-官方推荐教程-英文版
- 《神经网络与深度学习》(邱锡鹏-20191121)
- …
第一阶段:零基础入门(3-6个月)
新手应首先通过少而精的学习,看到全景图,建立大局观。 通过完成小实验,建立信心,才能避免“从入门到放弃”的尴尬。因此,第一阶段只推荐4本最必要的书(而且这些书到了第二、三阶段也能继续用),入门以后,在后续学习中再“哪里不会补哪里”即可。
第二阶段:基础进阶(3-6个月)
熟读《机器学习算法的数学解析与Python实现》并动手实践后,你已经对机器学习有了基本的了解,不再是小白了。这时可以开始触类旁通,学习热门技术,加强实践水平。在深入学习的同时,也可以探索自己感兴趣的方向,为求职面试打好基础。
第三阶段:工作应用
这一阶段你已经不再需要引导,只需要一些推荐书目。如果你从入门时就确认了未来的工作方向,可以在第二阶段就提前阅读相关入门书籍(对应“商业落地五大方向”中的前两本),然后再“哪里不会补哪里”。
有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓