此页面由 AI 自动翻译。查看英文原版

本页目录

  • 在 Script 节点中创建消息
  • 在主机上创建消息

消息

消息在链接的 节点 之间发送。节点之间通信的唯一方式是相互发送消息。在页面左侧的目录中,所有 DepthAI 消息类型都在 Messages 条目下列出。您可以点击它们以了解更多信息。

在 Script 节点中创建消息

DepthAI 消息可以在设备上由节点自动创建,也可以在 Script 节点内手动创建。在下面的示例中,代码取自 Script Camera Control 示例,其中 Camera Control 消息在 Script 节点内每秒创建一次,并发送到 Camera 的输入(cam.inputControl)。
Python
1script = pipeline.create(dai.node.Script)
2script.setScript("""
3  # 创建消息
4  ctrl = CameraControl(1)
5  # 配置消息
6  ctrl.setCaptureStill(True)
7  # 从 Script 节点发送消息
8  node.io['out'].send(ctrl)
9""")

在主机上创建消息

它也可以在主机计算机上创建,并通过输入队列发送到设备。在下面的示例中,我们删除了所有与展示如何在主机上创建消息并将其发送到设备无关的代码。
Python
1imgFrame = dai.ImgFrame()
2frame = np.ones((300, 300, 3), np.uint8) * 255
3imgFrame.setData(frame)
4imgFrame.setWidth(frame.shape[1])
5imgFrame.setHeight(frame.shape[0])
6imgFrame.setType(dai.ImgFrame.Type.BGR888i)
7
8with dai.Pipeline() as pipeline:
9    # 定义源和输出
10    script = pipeline.create(dai.node.Script)
11    cam_input_q = script.inputs["frame"].createInputQueue()
12    script.setScript("""
13    import time
14    while True:
15        frame = node.io["frame"].get()
16        if frame:
17          node.warn("Received frame")
18        time.sleep(0.1)
19    """)
20
21    pipeline.start()
22    while pipeline.isRunning():
23
24        cam_input_q.send(imgFrame)
25        time.sleep(1)