预制模板应用

快速上手 Luxonis 生态系统的最快方式是使用模板应用。该应用是你自己应用程序的起点,包含所有必要的组件,助你快速启动。应用范围从非常简单的管道(例如摄像头流)到复杂的综合性应用(例如使用自定义 AI 模型和节点)。
在 5 分钟内启动并运行:
Command Line
1# 安装核心软件包
2pip install depthai --force-reinstall
3# 克隆模板应用
4git clone https://github.com/luxonis/oak-template.git
5# 切换到模板应用目录
6cd oak-template
7# 安装依赖
8pip install -r requirements.txt
这会将模板/预制应用下载到当前目录。
Text
1template-app/
2├── main.py
3├── oakapp.toml
4├── requirements.txt
5├── media/ # 可选的媒体文件
6└── utils/ # 可选的辅助函数
这是你主要逻辑所在的位置。下载的脚本将使用"摄像头 + 神经网络 + HUB"作为默认管道。如果你不需要神经网络或 HUB 功能,可以自由替换为下方任意其他示例。
Python
1import depthai as dai
2import os
3
4from depthai_nodes.node import SnapsUploader
5from depthai_nodes.node.parsing_neural_network import ParsingNeuralNetwork
6from utils.snaps_producer import SnapsProducer
7from dotenv import load_dotenv
8
9# 假设 `DEPTHAI_HUB_API_KEY` 在工作空间根目录的 `.env` 文件中定义。
10# 在初始化管道之前加载环境变量。
11load_dotenv(override=True)
12
13model = "luxonis/yolov6-nano:r2-coco-512x288"
14time_interval = 10.0  # 两次快照上传之间的最小秒数
15
16visualizer = dai.RemoteConnection(httpPort=8082)
17device = dai.Device()
18
19with dai.Pipeline(device) as pipeline:
20    print("创建管道...")
21
22    model_description = dai.NNModelDescription(model)
23    platform = device.getPlatformAsString()
24    model_description.platform = platform
25    nn_archive = dai.NNArchive(
26        dai.getModelFromZoo(
27            model_description,
28        )
29    )
30
31    input_node = pipeline.create(dai.node.Camera).build()
32
33    nn_with_parser = pipeline.create(ParsingNeuralNetwork).build(
34        input_node, nn_archive
35    )
36
37    visualizer.addTopic("Video", nn_with_parser.passthrough, "images")
38    visualizer.addTopic("Visualizations", nn_with_parser.out, "images")
39
40    snaps_producer = pipeline.create(SnapsProducer).build(
41        frame=nn_with_parser.passthrough,
42        detections=nn_with_parser.out,
43        time_interval=time_interval
44    )
45
46    snaps_uploader = pipeline.create(SnapsUploader).build(snaps_producer.out)
47
48    print("管道创建完成。")
49
50    pipeline.start()
51    visualizer.registerPipeline(pipeline)
52
53    while pipeline.isRunning():
54        key = visualizer.waitKey(1)
55        if key == ord("q"):
56            print("从远程连接接收到 q 键!")
57            break

DepthAI 示例

如果你希望使用不同的管道,可以在此处找到可用节点及其示例列表

这是你定义容器构建过程的地方。对于模板应用,我们建议使用 Luxonis 基础镜像,并从 requirements.txt 安装 Python 依赖。更多信息请参见 此处
Toml
1identifier = "custom.oakapp"
2app_version = "1.0.0"
3
4prepare_container = [
5    { type = "RUN", command = "apt-get update" },
6    { type = "RUN", command = "apt-get install -y python3 python3-pip wget git" },
7]
8
9prepare_build_container = []
10
11build_steps = ["pip3 install -r /app/requirements.txt --break-system-packages"]
12
13entrypoint = ["bash", "-c", "python3 /app/main.py"]
14
15[base_image]
16api_url = "https://registry-1.docker.io"
17service = "registry.docker.io"
18oauth_url = "https://auth.docker.io/token"
19auth_type = "repository"
20auth_name = "luxonis/oakapp-base"
21image_name = "luxonis/oakapp-base"
22image_tag = "1.2.6"
如果你正在使用 Luxonis HUB(如"摄像头 + 神经网络 + HUB(默认)"示例中所示),你需要使用 HUB API 密钥进行身份验证。最安全且简单的方法是在应用的根文件夹中创建一个 .env 文件,并插入以下内容:
Command Line
1# .env 文件的内容
2DEPTHAI_HUB_API_KEY=<在此处插入你的 HUB API 密钥>
要获取 API 密钥,你需要先创建一个 Luxonis HUB 账户,然后 导航到团队设置,并点击"创建 API 密钥"按钮。这样做是安全的,因为 .env 文件会被 git 自动忽略,因此不存在将你的私有 API 密钥上传到公共仓库被他人看到的风险。.env 文件中的变量由 dotenv 库加载,认证将自动使用存储在 DEPTHAI_HUB_API_KEY 环境变量中的密钥完成。请查看我们的 API 密钥安全——最佳实践页面,了解更多安全传递 API 密钥到应用的示例。
现在你已经有了 main.pyoakapp.toml,可以通过以下方式之一部署你的应用:

独立运行

这是最简单的选项。只需在与 main.pyoakapp.toml 文件相同的目录中运行以下命令:
Command Line
1oakctl app run .
该命令会将你的应用构建成一个容器,并直接在 OAK 设备上运行,无需主机侧的应用进程。结果可以通过可视化器 Web 应用在 http://<device-ip>:8082 查看。

外设模式

此选项适用于您希望在主机上运行应用程序。此模式下不需要容器化,但需要与设备保持稳定连接。要以外设模式运行应用程序,请执行以下命令:
Command Line
1python3 main.py
可通过可视化器 Web 应用在 http://<host-ip>:8082 查看结果。

继续开发

跟随 OAK Apps 部分的教程和指南,继续开发您的应用程序。
继续开发

将应用发布到 Luxonis Hub

构建并发布应用,以便您的团队可以从 Hub 安装它。
将应用发布到 Luxonis Hub