Python API安装详解

请参考下表,为您的平台安装必要的 依赖项。安装后,您可以 安装DepthAI库

我们一直在努力改善发行软件的方式,以与无数平台和多种打包方式保持同步。如果您没有看到下面列出的特定平台或软件包格式,请通过 Gitee 与我们联系。

支持的平台

我们为以下平台保留最新的,预编译的库。请注意,新的变化是,对于Jetson / Xavier系列,Ubuntu现在也可以保持不变:

平台

指示

技术支持

Windows 10

Platform dependencies

Discord

macOS

Platform dependencies

Discord

Ubuntu

Platform dependencies

Discord

Raspberry Pi OS

Platform dependencies

Discord

Jetson/Xavier

Platform dependencies

Discord

社区和Luxonis的组合也支持以下平台。

平台

指示

技术支持

Fedora

Discord

Robot Operating System

Discord

Windows 7

WinUSB driver

Discord

Docker

Pull and run official images

Discord

Kernel Virtual Machine

Run on KVM

Discord

VMware

Run on VMware

Discord

安装系统依赖

运行 DepthAI 库需要几个基本的系统依赖。 它们中的大多数应该已经安装在大多数系统中,但是如果没有安装, 我们准备了一个 安装脚本 ,这将确保安装了所有依赖项以及方便的开发/编程工具。还有适用于 macOS ( 此处 ),Raspberry Pi ( 此处 ), Ubuntu( 此处 )和 Windows 10( 此处 )的视频指南。

macOS

bash -c "$(curl -fL https://cdn.jsdelivr.net/gh/OAKChina/depthai-docs-website@develop/source/_static/install_dependencies.sh)"

执行此命令后,关闭并重新打开终端窗口。

该脚本还可以在 M1 Mac 上运行,并且在 Rosetta 2 下安装了 Homebrew,因为某些 Python 软件包仍缺少对M1的原生支持。如果您已经在本地安装了 Homebrew 并且无法正常工作,请参见 此处 以了解其他一些疑难解答步骤。

请注意,如果未出现视频流窗口,请考虑运行以下命令:

python3 -m pip install opencv-python --force-reinstall --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple

有关更多信息,请参见我们论坛上的 macOS 视频预览窗口未能出现 话题讨论。

Raspberry Pi OS

sudo curl -fL https://cdn.jsdelivr.net/gh/OAKChina/depthai-docs-website@develop/source/_static/install_dependencies.sh | bash

Ubuntu

sudo wget -qO- https://cdn.jsdelivr.net/gh/OAKChina/depthai-docs-website@develop/source/_static/install_dependencies.sh | bash

注意! 如果从 PyPi 安装后 opencv 失败并显示非法指令,请添加:

echo "export OPENBLAS_CORETYPE=ARMV8" >> ~/.bashrc
source ~/.bashrc

Jetson

Warning

在Jetson上千万别直接去运行depthai包里自带的安装依赖脚本。

它会安装OpenCV,就会把原先的OpenCV覆盖了,普通的OpenCV是无法在Jetson上运行的。

可以按照下面的方法创建一个虚拟环境。

要在 Jetson NanoJetson Xavier 上安装 DepthAI ,请在完成全新安装和设置后执行以下步骤。在第一次登录时,不要立即运行更新。

第一步是可选的:更新升级软件包并删除您可能不会使用的应用程序或软件。

sudo apt update && sudo apt upgrade
sudo reboot now

更改SWAP的大小。这些说明来自Nvidia的 Jetson上的AI入门

# 禁用 ZRAM:
sudo systemctl disable nvzramconfig
# 创建 4GB swap文件
sudo fallocate -l 4G /mnt/4GB.swap
sudo chmod 600 /mnt/4GB.swap
sudo mkswap /mnt/4GB.swap

如果您对最终命令有疑问,可以尝试以下操作:

sudo vi /etc/fstab

# 在文件底部添加这一行
/mnt/4GB.swap swap swap defaults 0 0

# 重启
sudo reboot now

下一步是安装 pippython3 :

sudo -H apt install -y python3-pip

之后,安装并设置虚拟环境:

sudo -H pip3 install virtualenv virtualenvwrapper

将以下行添加到 bash 脚本中:

sudo vi ~/.bashrc

# 虚拟环境包装器配置
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

通过运行 source ~/.bashrc 命令保存并重新加载脚本。然后创建一个虚拟环境(在本例中称为 depthAI )。

mkvirtualenv depthAI -p python3

注意! 在安装 :code:`depthai: 之前,请确保您处于虚拟环境中。

#下载并安装依赖包
sudo wget -qO- http://docs.luxonis.com/_static/install_dependencies.sh | bash

#克隆 github 仓库
git clone https://github.com/luxonis/depthai-python.git
cd depthai-python

最后一步是 .bashrc 使用以下行进行编辑:

echo "export OPENBLAS_CORETYPE=ARMV8" >> ~/.bashrc

进入 depthai 示例文件夹, 运行 python install_requirements.py , 然后运行 python rgb_preview.py.

iacisme 通过 Discord 提供的解决方案.

openSUSE

对于 openSUSE,在这篇 官方文章 中提供了如何在 openSUSE 平台上安装 OAK 设备。

Windows

请参考 此处 ,下载OAK开发环境安装程序。

Windows 7

尽管我们不正式支持Windows 7, 但是我们的社区成员 已经成功 使用 Zadig 手动安装WinUSB . 连接DepthAI设备后,寻找具有 USB ID:03E7 2485 的设备并选择WinUSB(v6.1.7600.16385)安装WinUSB驱动程序,然后安装WCID驱动程序。

Docker

我们 在Docker Hub上的 luxonis/depthai-library 存储库中维护了一个包含DepthAI及其依赖关系和有用工具的Docker映像。它建立在基于 luxonis/depthai 的图像上。

01_rgb_preview.py 在Linux主机(带有X11窗口系统)的Docker容器内运行示例:

docker pull luxonis/depthai-library
docker run --rm \
    --privileged \
    -v /dev/bus/usb:/dev/bus/usb \
    --device-cgroup-rule='c 189:* rmw' \
    -e DISPLAY=$DISPLAY \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    luxonis/depthai-library:latest \
    python3 /depthai-python/examples/01_rgb_preview.py

要允许容器更新X11,您可能需要在主机上运行。xhost local:root

KVM

要访问 内核虚拟机 中的OAK-D摄像机,需要在主机检测到USB总线中的更改时即时连接和分离USB设备。

当DepthAI API使用OAK-D相机时,它会更改USB设备的类型。当本机使用相机时,这种情况会在背景中发生。但是,当在虚拟环境中使用相机时,情况就不同了。

在您的主机上,使用以下代码:

SUBSYSTEM=="usb", ACTION=="bind", ENV{ID_VENDOR_ID}=="03e7", MODE="0666", RUN+="/usr/local/bin/movidius_usb_hotplug.sh depthai-vm"
SUBSYSTEM=="usb", ACTION=="remove", ENV{PRODUCT}=="3e7/2485/1", ENV{DEVTYPE}=="usb_device", MODE="0666", RUN+="/usr/local/bin/movidius_usb_hotplug.sh depthai-vm"
SUBSYSTEM=="usb", ACTION=="remove", ENV{PRODUCT}=="3e7/f63b/100", ENV{DEVTYPE}=="usb_device", MODE="0666", RUN+="/usr/local/bin/movidius_usb_hotplug.sh depthai-vm"

然后,udev规则正在调用的脚本(movidius_usb_hotplug.sh)应该将USB设备连接/分离到虚拟机。在这种情况下,我们需要调用 virsh 命令。例如,脚本可以执行以下操作:

#!/bin/bash
# Abort script execution on errors
set -e
if [ "${ACTION}" == 'bind' ]; then
  COMMAND='attach-device'
elif [ "${ACTION}" == 'remove' ]; then
  COMMAND='detach-device'
  if [ "${PRODUCT}" == '3e7/2485/1' ]; then
    ID_VENDOR_ID=03e7
    ID_MODEL_ID=2485
  fi
  if [ "${PRODUCT}" == '3e7/f63b/100' ]; then
    ID_VENDOR_ID=03e7
    ID_MODEL_ID=f63b
  fi
else
  echo "Invalid udev ACTION: ${ACTION}" >&2
  exit 1
fi
echo "Running virsh ${COMMAND} ${DOMAIN} for ${ID_VENDOR}." >&2
virsh "${COMMAND}" "${DOMAIN}" /dev/stdin <<END
<hostdev mode='subsystem' type='usb'>
  <source>
    <vendor id='0x${ID_VENDOR_ID}'/>
    <product id='0x${ID_MODEL_ID}'/>
  </source>
</hostdev>
END
exit 0

请注意,当设备从USB总线断开连接时,某些udev环境变量不可用( ID_VENDOR_IDID_MODEL_ID ),这就是为什么您需要使用 PRODUCT 环境变量来标识哪个设备已断开连接的原因。

运行DepthAI API应用程序的虚拟机应定义一个udev规则来标识OAK-D摄像机。udev规则 在这里描述

Manuel Segarra-Abad 提供的解决方案。

VMware

在VMware中使用OAK-D设备需要一些额外的一次性设置,才能使其正常工作。

首先,确保将USB控制器从USB2切换到USB3。转到 Virtual Machine Settings -> USB Controller -> USB compatibility 并更改为USB 3.1(或对于较早的VMware版本,为USB 3.0,如有)。

根据设备的状态,可能会出现两个设备,并且都需要路由到虚拟机。这些可以在以下位置看到 Player -> Removable Devices :

  • 英特尔Movidius MyriadX

  • 英特尔VSC环回设备或英特尔Luxonis设备

在Linux OS中,运行以下命令为普通用户提供USB权限:

echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="03e7", MODE="0666"' | sudo tee /etc/udev/rules.d/80-movidius.rules
sudo udevadm control --reload-rules && sudo udevadm trigger

如果虚拟机未检测到设备,请尝试以下操作:查找并选择 Forget connection rule 选项(针对两个设备),然后尝试在VM内再次运行DepthAI示例。选择路由到VM并选择 not ask again (这很重要,因为存在超时,并且如果主机在几秒钟内未开始通信,则设备监视程序可能会被触发)。您可能需要重复运行该脚本几次,直到为VMware正确设置了所有脚本。

启用 USB 设备(仅在 Linux 上)

由于 DepthAI 是 USB 设备,因此为了在使用 udev 工具的系统上与之通信, 您需要添加 udev 规则以使设备可访问。

以下命令将向您的系统添加新的 udev 规则

Warning

提示:

第一次使用一定要配置此规则!

第一次使用一定要配置此规则!

第一次使用一定要配置此规则!

echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="03e7", MODE="0666"' | sudo tee /etc/udev/rules.d/80-movidius.rules
sudo udevadm control --reload-rules && sudo udevadm trigger

从 PyPi 安装

我们的软件包是 通过 PyPi 分发的,为了可以在您的环境中安装,请使用

python3 -m pip install depthai -i https://pypi.tuna.tsinghua.edu.cn/simple

有关其他安装选项,请参阅 其他安装选项

镜像加速

pypi 镜像使用帮助

临时使用

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

注意,simple 不能少, 是 https 而不是 http

设为默认

  • 使用命令行

升级 pip 到最新的版本 (>=10.0.0) 后进行配置:

pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

如果您的 pip 默认源的网络连接较差,临时使用镜像站来升级 pip:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
  • 文本编辑

Pip 的配置文件为用户根目录下的:~/.pip/pip.conf(Windows 路径为:C:\Users\<UserName>\pip\pip.ini), 您可以配置如下内容:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
timeout = 120

Ubuntu 镜像使用帮助

备份配置文件:

sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak

修改 sources.list 文件

sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list

更新索引

sudo apt-get update

GitHub 镜像使用帮助

FastGit 是一个适用于 GitHub 的加速服务,fgit 一个在克隆项目时自动把 GitHub 链接替换为 FastGit 链接的工具。

如何使用?

  • Linux

sudo curl -L https://github.com/fastgh/fgit/releases/download/v1.0.0/fgit.linux -o /usr/local/bin/fgit
sudo chmod +x /usr/local/bin/fgit
  • Mac

sudo curl -L https://github.com/fastgh/fgit/releases/download/v1.0.0/fgit.darwin -o /usr/local/bin/fgit
sudo chmod +x /usr/local/bin/fgit
  • Windows

https://github.com/fastgh/fgit/releases/download/v1.0.0/fgit.exe 下载后把它加入系统路径环境变量

Homebrew 镜像使用帮助

注:该镜像是 Homebrew 源程序以及 formula/cask 索引的镜像(即 brew update 时所更新内容)。

首次安装 Homebrew

  • 首先,需要确保系统中安装了 bash、git 和 curl,对于 macOS 用户需额外要求安装 Command Line Tools (CLT) for Xcode。

# 在命令行输入 xcode-select --install 安装 CLT for Xcode 即可
xcode-select --install
  • 接着,在终端输入以下两行命令设置环境变量:

# macOS 用户,请使用以下两句命令
export OMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git"

export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"
  • 最后,在终端运行以下命令以安装 Homebrew / Linuxbrew:

# 从镜像下载安装脚本,修改其中的仓库源并安装 Homebrew
git clone --depth=1 https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/install.git brew-install

/bin/bash -c "$(sed 's|^HOMEBREW_BREW_GIT_REMOTE=.*$|HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"|g' brew-install/install.sh)"

rm -rf brew-install

# 也可从 GitHub 获取官方安装脚本,修改其中的仓库源,运行以安装 Homebrew / Linuxbrew
/bin/bash -c "$( curl -fsSL https://github.com/Homebrew/install/raw/master/install.sh | sed 's|^HOMEBREW_BREW_GIT_REMOTE=.*$|HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"|g' )"

这样在首次安装的时候也可以使用镜像。

替换现有仓库上游

替换 brew 程序本身的源:

git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git

以下针对 macOS 系统上的 Homebrew:

# 手动设置
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git
git -C "$(brew --repo homebrew/cask-fonts)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask-fonts.git
git -C "$(brew --repo homebrew/cask-drivers)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask-drivers.git
git -C "$(brew --repo homebrew/cask-versions)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask-versions.git

# 使用脚本
bash -c "$(curl -fL https://cdn.jsdelivr.net/gh/OAKChina/depthai-docs-website@develop/source/_static/replace_existing_upstream.sh)"

更换上游后需重新设置 git 仓库 HEAD:

brew update-reset

Homebrew-bottles 镜像使用帮助

注:该镜像是 Homebrew 二进制预编译包的镜像。

临时使用

export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles

设为默认

  • 如果你使用 bash:

echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.bashrc
source ~/.bashrc
  • 如果你使用 zsh:

echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc

测试安装

我们在 gitee 上有 depthai 存储库, 其中包含许多有用的示例和准备好的神经网络, 您可以使用它们来加快原型制作速度。它还包括由我们的贡献者维护的测试脚本, 该脚本应有助于您验证设置是否正确。

首先,克隆 depthai 存储库,并将目录更改为该目录:

git clone https://gitee.com/oakchina/depthai.git
cd depthai

接下来是安装此仓库的要求。请注意,我们建议将依赖项安装在虚拟环境中,以免它们干扰系统上的其他Python工具/环境。

  • 对于 Mac / Windows / Ubuntu 等开发工具,我们建议使用 PyCharm IDE,因为它会自动为您创建和管理虚拟环境,以及许多其他好处。可替代的有: conda , pipenv 或者 virtualenv 可以直接使用(或用您的首选IDE)。

  • 有关资源受限的系统,如树莓派或其他小型Linux系统的安装,我们建议 conda , pipenv 或者 virtualenv 中的一个。要使用 virtualenv 设置虚拟环境,请运行 virtualenv venv && source venv/bin/activate

使用虚拟环境(或者如果需要在整个系统范围内),运行以下命令以安装此示例存储库的依赖:

python3 install_requirements.py -i https://pypi.tuna.tsinghua.edu.cn/simple

现在,从 DepthAI 内部运行演示脚本,以确保一切正常:

python3 depthai_demo.py

如果一切顺利的话,会弹出一个小视频窗口。 如果画面中的物体属于 物体检测示例 20 类 中的某一类,画面上会叠加该物体的信息。

运行其他示例

运行此演示之后,您可以运行 python3 depthai_demo.py -h 来查看默认情况下可以运行的其他神经网络。

检查完之后,继续执行以下操作:

  • 我们的教程,如何使用 OpenVINO 的预训练模型, 此处

  • 我们的实验性示例,在 这里 可以学习更多使用 DepthAI 的方法。

您还可以在下面继续学习如何转换自己的神经网络以在DepthAI上运行。

另外,我们还在下面提供了在线模型训练,该演示向您展示了如何为 DepthAI 训练和转换模型。

  • 在线机器学习训练和模型转换: 此处

其他安装方式

要从我们的源代码中获取最新但尚未发布的功能,您可以继续手动编译 DepthAI 软件包。

从源构建的依赖项

  • CMake > 3.2.0

  • 生成工具 (Ninja, make, …)

  • C/C++ 编译器

  • libusb1 开发包

Ubuntu, Raspberry Pi OS, … (基于 Debian 的系统)

在基于 Debian 的系统 (Raspberyy Pi OS, Ubuntu, …)上,可以通过运行以下命令获取安装依赖:

sudo apt-get -y install cmake libusb-1.0-0-dev build-essential

macOS (Mac OS X)

假设安装了 Mac OS X , 则 depthai-python 库需要以下依赖项

  • HomeBrew (如果尚未安装)

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
    
  • Python, libusb, CMake, wget

    brew install coreutils python3 cmake libusb wget
    

现在你已经准备好克隆 depthai-python ,并在 Mac OSX 上构建。

使用 GitHub commit 进行安装

Pip 允许用户从特定的 commit 安装软件包,即使它们尚未在 PyPi 上发布。

为此,请使用以下命令 - 并确保使用正确的 commit hash 替换 <commit_sha>

python3 -m pip install git+https://gitee.com/oakchina/depthai-python.git@<commit_sha>

使用/测试特定的 分支/PR

有时,使用特定分支可能会引起您的注意。 例如,这可能是因为我们已经听取了您的功能要求并在分支中实现。 或者可能是出于稳定性目的,在合并到 main 中之前,在 develop 中实现。

因此,当在 depthai 存储库中工作时, 可以通过以下命令来使用分支。 在此示例中, 我们将尝试使用 develop 分支 (这是在将新功能合并到 main 之前我们用来吸收新功能的分支):

在运行以下命令之前, 您可以独立克隆存储库 (以免覆盖任何本地更改) 也可以先执行 git pull

git checkout develop
python3 install_requirements.py

从源安装

如果需要,您还可以从源代码本身安装该软件包 - 它将允许您对 API 进行更改,并看到它们的实际操作。

为此,请先下载存储库,然后在开发模式下将该包添加到您的 python 解释器中

git clone https://gitee.com/oakchina/depthai-python.git
cd depthai-python
git submodule update --init --recursive
python3 setup.py develop  # 如果使用系统解释器而不是虚拟环境,则可能需要添加sudo

如果您要使用默认(main)以外的其他分支(e.g. develop), 可以通过键入

git checkout develop  # replace the "develop" with a desired branch name
git submodule update --recursive
python3 setup.py develop

或者,如果您要使用特定的 commit,请键入

git checkout <commit_sha>
git submodule update --recursive
python3 setup.py develop

有疑问?

我们很乐意为您提供代码或其他问题的帮助。

我们的联系方式

OAK QQ群
QQ

OAK视觉人工智能俱乐部

群号:280844897

加微信邀请入群
WeChat

微信号:13951940532

关注微信公众号:OAK视觉人工智能开发
欢迎到淘宝选购
taobao
OAK中国官方淘宝店

还可以通过我们发布的视频和文章了解OAK