预制模板应用
在 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.txtText
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 breakDepthAI 示例
如果你希望使用不同的管道,可以在此处找到可用节点及其示例列表
这是你定义容器构建过程的地方。对于模板应用,我们建议使用 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 密钥进行身份验证。最安全且简单的方法是在应用的根文件夹中创建一个 要获取 API 密钥,你需要先创建一个 Luxonis HUB 账户,然后 导航到团队设置,并点击"创建 API 密钥"按钮。这样做是安全的,因为
.env 文件,并插入以下内容:Command Line
1# .env 文件的内容
2DEPTHAI_HUB_API_KEY=<在此处插入你的 HUB API 密钥>.env 文件会被 git 自动忽略,因此不存在将你的私有 API 密钥上传到公共仓库被他人看到的风险。.env 文件中的变量由 dotenv 库加载,认证将自动使用存储在 DEPTHAI_HUB_API_KEY 环境变量中的密钥完成。请查看我们的 API 密钥安全——最佳实践页面,了解更多安全传递 API 密钥到应用的示例。现在你已经有了 这是最简单的选项。只需在与 该命令会将你的应用构建成一个容器,并直接在 OAK 设备上运行,无需主机侧的应用进程。结果可以通过可视化器 Web 应用在 此选项适用于您希望在主机上运行应用程序。此模式下不需要容器化,但需要与设备保持稳定连接。要以外设模式运行应用程序,请执行以下命令:可通过可视化器 Web 应用在
main.py 和 oakapp.toml,可以通过以下方式之一部署你的应用:独立运行
main.py 和 oakapp.toml 文件相同的目录中运行以下命令:Command Line
1oakctl app run .http://<device-ip>:8082 查看 。外设模式
Command Line
1python3 main.pyhttp://<host-ip>:8082 查看结果。