DepthAI
Software Stack

ON THIS PAGE

  • What it shows
  • Source code
  • Similar samples

GPUStereo

Supported on:RVC4
This example demonstrates the GPUStereo node on RVC4. It checks device.isGpuStereoSupported(), feeds full-resolution stereo camera outputs into the node, and visualizes the disparity stream.This example requires the DepthAI v3 API, see installation instructions.

What it shows

  • Runtime capability check with device.isGpuStereoSupported()
  • Full-resolution Camera outputs linked into GPUStereo
  • initialConfig.setConfidenceThreshold(25) startup configuration
  • Disparity visualization from the disparity output queue

Source code

Python

Python
GitHub
1#!/usr/bin/env python3
2import cv2
3import depthai as dai
4import numpy as np
5
6device = dai.Device()
7if not device.isGpuStereoSupported():
8    print("Exiting GPUStereo example: GPUStereo is not supported on this device.")
9    raise SystemExit(0)
10
11with dai.Pipeline(device) as pipeline:
12    camLeft = pipeline.create(dai.node.Camera).build(dai.CameraBoardSocket.CAM_B)
13    camRight = pipeline.create(dai.node.Camera).build(dai.CameraBoardSocket.CAM_C)
14
15    gpu = pipeline.create(dai.node.GPUStereo)
16    camLeft.requestFullResolutionOutput().link(gpu.left)
17    camRight.requestFullResolutionOutput().link(gpu.right)
18    gpu.initialConfig.setConfidenceThreshold(25)
19
20    dispQ = gpu.disparity.createOutputQueue()
21
22    with pipeline:
23        pipeline.start()
24        while pipeline.isRunning():
25            frame = dispQ.get()
26            d = frame.getFrame().astype(np.float32)
27            d = cv2.normalize(d, None, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)
28            cv2.imshow("GPUStereo Disparity", cv2.applyColorMap(d, cv2.COLORMAP_JET))
29            if cv2.waitKey(1) == ord("q"):
30                break

C++

1/**
2 * Minimal GPUStereo example — disparity from a stereo camera pair (RVC4 only).
3 */
4#include <depthai/depthai.hpp>
5#include <iostream>
6#include <opencv2/opencv.hpp>
7
8int main() {
9    std::shared_ptr<dai::Device> device = std::make_shared<dai::Device>();
10
11    if(!device->isGpuStereoSupported()) {
12        std::cout << "Exiting GPUStereo example: GPUStereo is not supported on this device.\n";
13        return 0;
14    }
15
16    dai::Pipeline pipeline(device);
17    auto camLeft = pipeline.create<dai::node::Camera>();
18    auto camRight = pipeline.create<dai::node::Camera>();
19    camLeft->build(dai::CameraBoardSocket::CAM_B);
20    camRight->build(dai::CameraBoardSocket::CAM_C);
21
22    auto gpu = pipeline.create<dai::node::GPUStereo>();
23    camLeft->requestFullResolutionOutput()->link(gpu->left);
24    camRight->requestFullResolutionOutput()->link(gpu->right);
25    gpu->initialConfig->setConfidenceThreshold(25);
26
27    auto dispQ = gpu->disparity.createOutputQueue();
28
29    pipeline.start();
30    while(pipeline.isRunning()) {
31        auto frame = dispQ->get<dai::ImgFrame>();
32        cv::Mat disp(frame->getHeight(), frame->getWidth(), CV_16UC1, frame->getData().data());
33        cv::Mat dispF;
34        disp.convertTo(dispF, CV_32F);
35        cv::Mat disp8;
36        cv::normalize(dispF, disp8, 0, 255, cv::NORM_MINMAX, CV_8U);
37        cv::Mat dispColor;
38        cv::applyColorMap(disp8, dispColor, cv::COLORMAP_JET);
39        cv::imshow("GPUStereo Disparity", dispColor);
40        if(cv::waitKey(1) == 'q') break;
41    }
42
43    return 0;
44}

Similar samples

Need assistance?

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