ON THIS PAGE

  • Demo
  • Source code
  • Pipeline

RGB video

This example shows how to use high resolution video at low latency. Compared to RGB Preview, this demo outputs NV12 frames whereas preview frames are BGR and are not suited for larger resolution (eg. 1920x1080). Preview is more suitable for either NN or visualization purposes.

Similar samples:

Demo

This example requires the DepthAI v3 API, see installation instructions.

Source code

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}

Pipeline

Need assistance?

Head over to Discussion Forum for technical support or any other questions you might have.