Python API安装详解
请参考下表,为您的平台安装必要的 依赖项。安装后,您可以 安装DepthAI库。
我们一直在努力改善发行软件的方式,以与无数平台和多种打包方式保持同步。如果您没有看到下面列出的特定平台或软件包格式,请通过 Gitee 与我们联系。
支持的平台
我们为以下平台保留最新的,预编译的库。请注意,新的变化是,对于Jetson / Xavier系列,Ubuntu现在也可以保持不变:
平台 |
指示 |
技术支持 |
---|---|---|
Windows 10 |
||
macOS |
||
Ubuntu |
||
Raspberry Pi OS |
||
Jetson/Xavier |
社区和Luxonis的组合也支持以下平台。
平台 |
指示 |
技术支持 |
---|---|---|
Fedora |
||
Robot Operating System |
||
Windows 7 |
||
Docker |
||
Kernel Virtual Machine |
||
VMware |
安装系统依赖
运行 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 Nano 或 Jetson 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
下一步是安装 pip
和 python3
:
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
.
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_ID
或 ID_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 镜像使用帮助
如何使用?
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
来查看默认情况下可以运行的其他神经网络。
检查完之后,继续执行以下操作:
您还可以在下面继续学习如何转换自己的神经网络以在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