-
released this
2026-09-15 09:36:32 +00:00 | 5 commits to main since this releaseFirst 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/textRun with
--uv: the build command isuv pip install ., so the node gets its own
managed environment. Every input is optional — wiringimagealone is a plain viewer.Inputs
Input Payload imagestd/media/v1/Imagestructdepthstd/media/v1/Imagestruct, one channelcamera_info[fx, fy, cx, cy]or a 9-element row-majorKbboxArrow struct {bbox, conf, labels},xyxyorxywhtextArrow array of size 1 imageanddeptharestd/media/v1/Image: an Arrow struct ofwidth,height,
encodinganddata, 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 —32FC1or
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_infoholds the pinhole model. It is also read from the metadata of any frame
carryingfx,fy,cxandcy, 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
imageanddeptheach fill a panel, tiled left to right and scaled to a common
height.bboxandtextare 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=truesuppresses 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
(orCI=true). On a bare Linux imageopencv-pythonneedslibgl1andlibglib2.0-0.Downloads