Python API安装详解 ================================= 请参考下表,为您的平台安装必要的 :ref:`依赖项 <支持的平台>`。安装后,您可以 :ref:`安装DepthAI库 <从 PyPi 安装>`。 我们一直在努力改善发行软件的方式,以与无数平台和多种打包方式保持同步。如果您没有看到下面列出的特定平台或软件包格式,请通过 `Gitee `_ 与我们联系。 支持的平台 ################################# 我们为以下平台保留最新的,预编译的库。请注意,新的变化是,对于Jetson / Xavier系列,Ubuntu现在也可以保持不变: ======================== ============================================== ================================================================================ 平台 指示 技术支持 ======================== ============================================== ================================================================================ Windows 10 :ref:`Platform dependencies ` `Discord `__ macOS :ref:`Platform dependencies ` `Discord `__ Ubuntu :ref:`Platform dependencies ` `Discord `__ Raspberry Pi OS :ref:`Platform dependencies ` `Discord `__ Jetson/Xavier :ref:`Platform dependencies ` `Discord `__ ======================== ============================================== ================================================================================ 社区和Luxonis的组合也支持以下平台。 ====================== ===================================================== ================================================================================ 平台 指示 技术支持 ====================== ===================================================== ================================================================================ Fedora `Discord `__ Robot Operating System `Discord `__ Windows 7 :ref:`WinUSB driver ` `Discord `__ Docker :ref:`Pull and run official images ` `Discord `__ Kernel Virtual Machine :ref:`Run on KVM ` `Discord `__ VMware :ref:`Run on VMware ` `Discord `__ ====================== ===================================================== ================================================================================ 安装系统依赖 ############################## 运行 DepthAI 库需要几个基本的系统依赖。 它们中的大多数应该已经安装在大多数系统中,但是如果没有安装, 我们准备了一个 :download:`安装脚本 ` ,这将确保安装了所有依赖项以及方便的开发/编程工具。还有适用于 macOS ( `此处 `__ ),Raspberry Pi ( `此处 `__ ), Ubuntu( `此处 `__ )和 Windows 10( `此处 `__ )的视频指南。 macOS ****************************** .. code-block:: bash 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 并且无法正常工作,请参见 `此处 `__ 以了解其他一些疑难解答步骤。 请注意,如果未出现视频流窗口,请考虑运行以下命令: .. code-block:: bash python3 -m pip install opencv-python --force-reinstall --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple 有关更多信息,请参见我们论坛上的 `macOS 视频预览窗口未能出现 `__ 话题讨论。 Raspberry Pi OS ********************************* .. code-block:: bash sudo curl -fL https://cdn.jsdelivr.net/gh/OAKChina/depthai-docs-website@develop/source/_static/install_dependencies.sh | bash Ubuntu ********************************* .. code-block:: bash sudo wget -qO- https://cdn.jsdelivr.net/gh/OAKChina/depthai-docs-website@develop/source/_static/install_dependencies.sh | bash **注意!** 如果从 PyPi 安装后 opencv 失败并显示非法指令,请添加: .. code-block:: bash echo "export OPENBLAS_CORETYPE=ARMV8" >> ~/.bashrc source ~/.bashrc Jetson ******************************** .. warning:: 在Jetson上千万别直接去运行depthai包里自带的安装依赖脚本。 它会安装OpenCV,就会把原先的OpenCV覆盖了,普通的OpenCV是无法在Jetson上运行的。 可以按照下面的方法创建一个虚拟环境。 要在 `Jetson Nano `__ 或 `Jetson Xavier `__ 上安装 DepthAI ,请在完成全新安装和设置后执行以下步骤。在第一次登录时,不要立即运行更新。 第一步是可选的:更新升级软件包并删除您可能不会使用的应用程序或软件。 .. code-block:: bash sudo apt update && sudo apt upgrade sudo reboot now 更改SWAP的大小。这些说明来自Nvidia的 `Jetson上的AI入门 `__ .. code-block:: bash # 禁用 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 如果您对最终命令有疑问,可以尝试以下操作: .. code-block:: bash sudo vi /etc/fstab # 在文件底部添加这一行 /mnt/4GB.swap swap swap defaults 0 0 # 重启 sudo reboot now 下一步是安装 :code:`pip` 和 :code:`python3` : .. code-block:: bash sudo -H apt install -y python3-pip 之后,安装并设置虚拟环境: .. code-block:: bash sudo -H pip3 install virtualenv virtualenvwrapper 将以下行添加到 bash 脚本中: .. code-block:: bash sudo vi ~/.bashrc # 虚拟环境包装器配置 export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh 通过运行 :code:`source ~/.bashrc` 命令保存并重新加载脚本。然后创建一个虚拟环境(在本例中称为 :code:`depthAI` )。 .. code-block:: bash mkvirtualenv depthAI -p python3 **注意!** 在安装 :code:`depthai: 之前,请确保您处于虚拟环境中。 .. code-block:: bash #下载并安装依赖包 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 最后一步是 :code:`.bashrc` 使用以下行进行编辑: .. code-block:: bash echo "export OPENBLAS_CORETYPE=ARMV8" >> ~/.bashrc 进入 :code:`depthai` 示例文件夹, 运行 :code:`python install_requirements.py` , 然后运行 :code:`python rgb_preview.py`. `iacisme `__ 通过 `Discord `__ 提供的解决方案. openSUSE ******************************** 对于 openSUSE,在这篇 `官方文章 `__ 中提供了如何在 openSUSE 平台上安装 OAK 设备。 Windows ******************************** 请参考 :ref:`此处 <快速上手>` ,下载OAK开发环境安装程序。 Windows 7 ************************** 尽管我们不正式支持Windows 7, 但是我们的社区成员 `已经成功 `__ 使用 `Zadig `__ 手动安装WinUSB . 连接DepthAI设备后,寻找具有 :code:`USB ID:03E7 2485` 的设备并选择WinUSB(v6.1.7600.16385)安装WinUSB驱动程序,然后安装WCID驱动程序。 Docker ********************** 我们 在Docker Hub上的 `luxonis/depthai-library `_ 存储库中维护了一个包含DepthAI及其依赖关系和有用工具的Docker映像。它建立在基于 `luxonis/depthai `_ 的图像上。 :code:`01_rgb_preview.py` 在Linux主机(带有X11窗口系统)的Docker容器内运行示例: .. code-block:: bash 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,您可能需要在主机上运行。:code:`xhost local:root` KVM ****************** 要访问 `内核虚拟机 `_ 中的OAK-D摄像机,需要在主机检测到USB总线中的更改时即时连接和分离USB设备。 当DepthAI API使用OAK-D相机时,它会更改USB设备的类型。当本机使用相机时,这种情况会在背景中发生。但是,当在虚拟环境中使用相机时,情况就不同了。 在您的主机上,使用以下代码: .. code-block:: bash 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设备连接/分离到虚拟机。在这种情况下,我们需要调用 :code:`virsh` 命令。例如,脚本可以执行以下操作: .. code-block:: #!/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 exit 0 请注意,当设备从USB总线断开连接时,某些udev环境变量不可用( :code:`ID_VENDOR_ID` 或 :code:`ID_MODEL_ID` ),这就是为什么您需要使用 :code:`PRODUCT` 环境变量来标识哪个设备已断开连接的原因。 运行DepthAI API应用程序的虚拟机应定义一个udev规则来标识OAK-D摄像机。udev规则 :ref:`在这里描述 ` `Manuel Segarra-Abad `__ 提供的解决方案。 VMware *************** 在VMware中使用OAK-D设备需要一些额外的一次性设置,才能使其正常工作。 首先,确保将USB控制器从USB2切换到USB3。转到 :code:`Virtual Machine Settings -> USB Controller -> USB compatibility` 并更改为USB 3.1(或对于较早的VMware版本,为USB 3.0,如有)。 根据设备的状态,可能会出现两个设备,并且都需要路由到虚拟机。这些可以在以下位置看到 :code:`Player -> Removable Devices` : * 英特尔Movidius MyriadX * 英特尔VSC环回设备或英特尔Luxonis设备 在Linux OS中,运行以下命令为普通用户提供USB权限: .. code-block:: bash 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 设备,因此为了在使用 :code:`udev` 工具的系统上与之通信, 您需要添加 udev 规则以使设备可访问。 以下命令将向您的系统添加新的 udev 规则 .. warning:: 提示: 第一次使用一定要配置此规则! 第一次使用一定要配置此规则! 第一次使用一定要配置此规则! .. code-block:: bash 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 `__ 分发的,为了可以在您的环境中安装,请使用 .. code-block:: bash python3 -m pip install depthai -i https://pypi.tuna.tsinghua.edu.cn/simple 有关其他安装选项,请参阅 :ref:`其他安装选项 <其他安装方式>` 。 镜像加速 ######## pypi 镜像使用帮助 ***************** 临时使用 -------- .. code:: bash pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package 注意,\ ``simple`` 不能少, 是 ``https`` 而不是 ``http`` 设为默认 -------- - 使用命令行 升级 pip 到最新的版本 (>=10.0.0) 后进行配置: .. code:: bash pip install pip -U pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 如果您的 pip 默认源的网络连接较差,临时使用镜像站来升级 pip: .. code:: bash pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U - 文本编辑 Pip 的配置文件为用户根目录下的:\ ``~/.pip/pip.conf``\ (Windows 路径为:\ ``C:\Users\\pip\pip.ini``\ ), 您可以配置如下内容: .. code:: text [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple trusted-host = pypi.tuna.tsinghua.edu.cn timeout = 120 Ubuntu 镜像使用帮助 ***************************** 备份配置文件: --------------- .. code:: bash sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak 修改 ``sources.list`` 文件 ---------------------------- .. code:: bash 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 更新索引 ----------- .. code:: bash sudo apt-get update GitHub 镜像使用帮助 ******************* `FastGit `__ 是一个适用于 GitHub 的加速服务,\ `fgit `__ 一个在克隆项目时自动把 GitHub 链接替换为 FastGit 链接的工具。 如何使用? ---------- - Linux .. code:: bash 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 .. code:: bash 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。 .. code:: bash # 在命令行输入 xcode-select --install 安装 CLT for Xcode 即可 xcode-select --install - 接着,在终端输入以下两行命令设置环境变量: .. code:: bash # 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: .. code:: bash # 从镜像下载安装脚本,修改其中的仓库源并安装 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 程序本身的源: .. code:: bash git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git 以下针对 macOS 系统上的 Homebrew: .. code:: bash # 手动设置 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: .. code-block:: bash brew update-reset Homebrew-bottles 镜像使用帮助 ***************************** 注:该镜像是 Homebrew 二进制预编译包的镜像。 临时使用 -------- .. code:: bash export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles 设为默认 -------- - 如果你使用 bash: .. code:: bash echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.bashrc source ~/.bashrc - 如果你使用 zsh: .. code:: bash echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.zshrc source ~/.zshrc 测试安装 ################# 我们在 gitee 上有 `depthai `__ 存储库, 其中包含许多有用的示例和准备好的神经网络, 您可以使用它们来加快原型制作速度。它还包括由我们的贡献者维护的测试脚本, 该脚本应有助于您验证设置是否正确。 首先,克隆 `depthai `__ 存储库,并将目录更改为该目录: .. code-block:: bash 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` 。 使用虚拟环境(或者如果需要在整个系统范围内),运行以下命令以安装此示例存储库的依赖: .. code-block:: bash python3 install_requirements.py -i https://pypi.tuna.tsinghua.edu.cn/simple 现在,从 DepthAI 内部运行演示脚本,以确保一切正常: .. code-block:: bash python3 depthai_demo.py 如果一切顺利的话,会弹出一个小视频窗口。 如果画面中的物体属于 `物体检测示例 20 类 `__ 中的某一类,画面上会叠加该物体的信息。 运行其他示例 ########################################## 运行此演示之后,您可以运行 :code:`python3 depthai_demo.py -h` 来查看默认情况下可以运行的其他神经网络。 检查完之后,继续执行以下操作: - 我们的教程,如何使用 OpenVINO 的预训练模型, :ref:`此处 <使用预训练的 OpenVINO 模型>` - 我们的实验性示例,在 `这里 `__ 可以学习更多使用 DepthAI 的方法。 您还可以在下面继续学习如何转换自己的神经网络以在DepthAI上运行。 另外,我们还在下面提供了在线模型训练,该演示向您展示了如何为 DepthAI 训练和转换模型。 - 在线机器学习训练和模型转换: `此处 `__ 其他安装方式 ########################## 要从我们的源代码中获取最新但尚未发布的功能,您可以继续手动编译 DepthAI 软件包。 从源构建的依赖项 ********************************* - CMake > 3.2.0 - 生成工具 (Ninja, make, ...) - C/C++ 编译器 - libusb1 开发包 .. _raspbian: Ubuntu, Raspberry Pi OS, ... (基于 Debian 的系统) --------------------------------------------------- 在基于 Debian 的系统 (Raspberyy Pi OS, Ubuntu, ...)上,可以通过运行以下命令获取安装依赖: .. code-block:: bash sudo apt-get -y install cmake libusb-1.0-0-dev build-essential macOS (Mac OS X) ---------------- 假设安装了 Mac OS X , 则 `depthai-python `__ 库需要以下依赖项 - HomeBrew (如果尚未安装) .. code-block:: bash /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" - Python, libusb, CMake, wget .. code-block:: bash brew install coreutils python3 cmake libusb wget 现在你已经准备好克隆 `depthai-python `__ ,并在 Mac OSX 上构建。 使用 GitHub commit 进行安装 *************************** Pip 允许用户从特定的 commit 安装软件包,即使它们尚未在 PyPi 上发布。 为此,请使用以下命令 - 并确保使用正确的 `commit hash `__ 替换 :code:`` .. code-block:: bash python3 -m pip install git+https://gitee.com/oakchina/depthai-python.git@ 使用/测试特定的 分支/PR ********************************** 有时,使用特定分支可能会引起您的注意。 例如,这可能是因为我们已经听取了您的功能要求并在分支中实现。 或者可能是出于稳定性目的,在合并到 :code:`main` 中之前,在 :code:`develop` 中实现。 因此,当在 `depthai `__ 存储库中工作时, 可以通过以下命令来使用分支。 在此示例中, 我们将尝试使用 :code:`develop` 分支 (这是在将新功能合并到 :code:`main` 之前我们用来吸收新功能的分支): 在运行以下命令之前, 您可以独立克隆存储库 (以免覆盖任何本地更改) 也可以先执行 :code:`git pull` 。 .. code-block:: bash git checkout develop python3 install_requirements.py 从源安装 ******************* 如果需要,您还可以从源代码本身安装该软件包 - 它将允许您对 API 进行更改,并看到它们的实际操作。 为此,请先下载存储库,然后在开发模式下将该包添加到您的 python 解释器中 .. code-block:: bash git clone https://gitee.com/oakchina/depthai-python.git cd depthai-python git submodule update --init --recursive python3 setup.py develop # 如果使用系统解释器而不是虚拟环境,则可能需要添加sudo 如果您要使用默认(:code:`main`)以外的其他分支(e.g. :code:`develop`), 可以通过键入 .. code-block:: bash git checkout develop # replace the "develop" with a desired branch name git submodule update --recursive python3 setup.py develop 或者,如果您要使用特定的 commit,请键入 .. code-block:: bash git checkout git submodule update --recursive python3 setup.py develop .. include:: /pages/includes/footer-short.rst