• v0.1.0 c178afd58e

    v0.1.0
    validate / validate (push) Successful in 59m16s
    Stable

    cristhian released this 2026-09-15 09:36:32 +00:00 | 5 commits to main since this release

    First release.

    Displays a colour image and a depth map side by side in one OpenCV window, with bounding
    box, text and camera intrinsics overlays. A display sink for debugging a vision
    pipeline: it produces no outputs.

    Wiring it

    nodes:
      - id: view
        git: https://gitea.liria.cl/liria/dora-image-view.git
        tag: v0.1.0
        build: uv pip install .
        path: dora-image-view
        inputs:
          image: camera/image_bgr
          depth: camera/depth
          camera_info: camera/camera_info
          bbox: detector/bbox
          text: detector/text
    

    Run with --uv: the build command is uv pip install ., so the node gets its own
    managed environment. Every input is optional — wiring image alone is a plain viewer.

    Inputs

    Input Payload
    image std/media/v1/Image struct
    depth std/media/v1/Image struct, one channel
    camera_info [fx, fy, cx, cy] or a 9-element row-major K
    bbox Arrow struct {bbox, conf, labels}, xyxy or xywh
    text Arrow array of size 1

    image and depth are std/media/v1/Image: an Arrow struct of width, height,
    encoding and data, so the payload describes itself and nothing about the frame's
    shape has to be agreed out of band. Depth uses a single-channel encoding — 32FC1 or
    16UC1 — because dora's type registry has no depth type and a depth map is an image
    whose pixels are distances, which is the reading ROS takes too. The older flat-buffer
    forms are still decoded, so a producer's payload can move before its manifest does.

    camera_info holds the pinhole model. It is also read from the metadata of any frame
    carrying fx, fy, cx and cy, which is what covers a camera that publishes it once
    per session and a viewer that started afterwards — so wiring the input is optional even
    for a camera that publishes it.

    Display

    image and depth each fill a panel, tiled left to right and scaled to a common
    height. bbox and text are overlays rather than panels: boxes are drawn on the image
    panel in its own pixels, the caption on the composite, and the camera model under it.

    The depth colormap auto-ranges over the full extent of the valid pixels, not a
    percentile of them. Trimming the tails looks safer and breaks the scene this node exists
    for: a small object in front of a large wall is a few percent of the pixels, so both
    tails land on the wall and the object clips away. Pin either end with
    VIEW_DEPTH_MIN_MM / VIEW_DEPTH_MAX_MM.

    CI=true suppresses the window while still decoding every input, which is what makes
    the node safe inside a pipeline test.

    Notes

    Based on opencv-plot
    from dora-hub, brought up to the dora 1.0 node contract, renamed, and changed to the
    typed Arrow image.

    Requires dora 1.0+ (verified with dora-cli 1.0.1), Python 3.11+, uv, and a display
    (or CI=true). On a bare Linux image opencv-python needs libgl1 and libglib2.0-0.

    Downloads