本页目录

  • 演示
  • 源代码
  • 流水线

RGB 视频

本示例演示如何以低延迟使用高分辨率视频。与 RGB 预览 相比,此 demo 输出 NV12 帧,而预览帧为 BGR 且不适合较大分辨率(例如 1920x1080)。预览更适合神经网络的推理或可视化。

类似示例:

演示

这个示例需要DepthAI v3 API,参见安装说明

源代码

Python

Python
GitHub
1#!/usr/bin/env python3
2
3import cv2
4import depthai as dai
5
6# Create pipeline
7pipeline = dai.Pipeline()
8
9# Define source and output
10camRgb = pipeline.create(dai.node.ColorCamera)
11xoutVideo = pipeline.create(dai.node.XLinkOut)
12
13xoutVideo.setStreamName("video")
14
15# Properties
16camRgb.setBoardSocket(dai.CameraBoardSocket.CAM_A)
17camRgb.setResolution(dai.ColorCameraProperties.SensorResolution.THE_1080_P)
18camRgb.setVideoSize(1920, 1080)
19
20xoutVideo.input.setBlocking(False)
21xoutVideo.input.setQueueSize(1)
22
23# Linking
24camRgb.video.link(xoutVideo.input)
25
26# Connect to device and start pipeline
27with dai.Device(pipeline) as device:
28
29    video = device.getOutputQueue(name="video", maxSize=1, blocking=False)
30
31    while True:
32        videoIn = video.get()
33
34        # Get BGR frame from NV12 encoded video frame to show with opencv
35        # Visualizing the frame on slower hosts might have overhead
36        cv2.imshow("video", videoIn.getCvFrame())
37
38        if cv2.waitKey(1) == ord('q'):
39            break

C++

1#include <iostream>
2
3// Includes common necessary includes for development using depthai library
4#include "depthai/depthai.hpp"
5
6int main() {
7    // Create pipeline
8    dai::Pipeline pipeline;
9
10    // Define source and output
11    auto camRgb = pipeline.create<dai::node::ColorCamera>();
12    auto xoutVideo = pipeline.create<dai::node::XLinkOut>();
13
14    xoutVideo->setStreamName("video");
15
16    // Properties
17    camRgb->setBoardSocket(dai::CameraBoardSocket::CAM_A);
18    camRgb->setResolution(dai::ColorCameraProperties::SensorResolution::THE_1080_P);
19    camRgb->setVideoSize(1920, 1080);
20
21    xoutVideo->input.setBlocking(false);
22    xoutVideo->input.setQueueSize(1);
23
24    // Linking
25    camRgb->video.link(xoutVideo->input);
26
27    // Connect to device and start pipeline
28    dai::Device device(pipeline);
29
30    auto video = device.getOutputQueue("video");
31
32    while(true) {
33        auto videoIn = video->get<dai::ImgFrame>();
34
35        // Get BGR frame from NV12 encoded video frame to show with opencv
36        // Visualizing the frame on slower hosts might have overhead
37        cv::imshow("video", videoIn->getCvFrame());
38
39        int key = cv::waitKey(1);
40        if(key == 'q' || key == 'Q') {
41            return 0;
42        }
43    }
44    return 0;
45}

流水线

需要帮助?

请前往 OAKChina 官网 获取技术支持或解答您的任何疑问。