validate / validate (pull_request) Successful in 59m10s
ssh:// cannot authenticate under dora-cli 1.0.1: it fetches through libgit2 with no credential callback, so the only transport that can work is anonymous https. The documented URLs move accordingly, and the repository is now dora-image-view rather than dora-plot. The note about what a `git:` node needs is corrected while here. The cause is not that a repository is private but that the fetch is anonymous: on Gitea a repository inside a private organization is internal and answers an anonymous clone with 401 even when the repository itself is marked public. The organization has to be public too.
99 lines
4.1 KiB
YAML
99 lines
4.1 KiB
YAML
# Node manifest: the typed contract a consumer wires against.
|
|
#
|
|
# No source package is shared between node repositories, so this file and its
|
|
# type URNs are the only contract a consumer has. `dora validate` checks a
|
|
# dataflow against it without running the node, so CI needs neither OpenCV nor
|
|
# a display.
|
|
apiVersion: 1
|
|
name: dora-image-view
|
|
namespace: liria
|
|
description: Displays an image and a depth map side by side in an OpenCV window, with bounding box, text and camera intrinsics overlays
|
|
categories: [visualization, debug]
|
|
keywords: [opencv, view, bbox, bounding-box, image, depth, intrinsics, camera-info, visualization, object-detection]
|
|
|
|
runtime: python
|
|
entrypoint: dora-image-view
|
|
# Run the dataflow with --uv, which gives the node its own managed venv under
|
|
# `.dora/python-envs/`, so what it imports at runtime is what was installed
|
|
# here. Without --uv this needs a virtualenv to install into.
|
|
build: uv pip install .
|
|
dora: ">=1.0"
|
|
|
|
inputs:
|
|
image:
|
|
type: std/media/v1/Image
|
|
required: false
|
|
description: >-
|
|
Base image to draw on: an Arrow struct {width, height, encoding, data}.
|
|
Supported encodings: bgr8, rgb8, jpeg/jpg/jpe/bmp/webp/png (encoded
|
|
bytes), yuv420, avif. Receiving this input triggers a redraw and display.
|
|
A flat UInt8 buffer described by {width, height, encoding} metadata is
|
|
still decoded, for producers that have not moved to the struct.
|
|
bbox:
|
|
required: false
|
|
description: >-
|
|
Bounding boxes to overlay: an Arrow struct with fields {bbox, conf,
|
|
labels} and metadata {format}. Supported formats: xyxy, xywh. Stored and
|
|
drawn on the next image redraw. Deliberately untyped — senders differ in
|
|
whether the numeric fields are 32- or 64-bit, and the node casts either.
|
|
text:
|
|
type: std/core/v1/String
|
|
required: false
|
|
description: >-
|
|
Text string to overlay at the top-left corner. Stored and drawn on the
|
|
next image redraw.
|
|
camera_info:
|
|
type: std/core/v1/Float32
|
|
required: false
|
|
description: >-
|
|
The pinhole model the depth map is interpreted through: [fx, fy, cx, cy],
|
|
or a nine-element row-major K as ROS spells it in sensor_msgs/CameraInfo.
|
|
Distortion coefficients are read from the `distortion` metadata. Stored
|
|
and displayed, and held for readers that turn depth into 3D. A sender
|
|
that also puts fx/fy/cx/cy in each frame's metadata does not need to wire
|
|
this input -- they are picked up from there, which is what covers a
|
|
camera that published its intrinsics before this node started.
|
|
depth:
|
|
type: std/media/v1/Image
|
|
required: false
|
|
description: >-
|
|
Depth map as an Arrow struct {width, height, encoding, data}, one channel
|
|
per pixel. Supported encodings: 32FC1/float32 and 16UC1/mono16/uint16 --
|
|
dora has no depth type, and a depth map is an image whose pixels are
|
|
distances, which is how ROS spells it too. Millimetres unless the `units`
|
|
metadata says `m`; 0 and non-finite values are missing depth and draw
|
|
black. Colour-mapped into its own panel, which receiving this input
|
|
redraws. A flat Float32 buffer with {shape, units} metadata is still
|
|
decoded, for producers that have not moved to the struct.
|
|
|
|
outputs: {}
|
|
|
|
env:
|
|
VIEW_DEPTH_MIN_MM:
|
|
type: float
|
|
description: >-
|
|
Pin the near end of the depth colour range, in millimetres. Each end is
|
|
auto-ranged over the valid pixels of the current frame when it is unset.
|
|
VIEW_DEPTH_MAX_MM:
|
|
type: float
|
|
description: Pin the far end of the depth colour range, in millimetres.
|
|
VIEW_WIDTH:
|
|
type: int
|
|
description: Resize the displayed frame to this width (pixels). Defaults to the image input width.
|
|
VIEW_HEIGHT:
|
|
type: int
|
|
description: Resize the displayed frame to this height (pixels). Defaults to the image input height.
|
|
|
|
example: |
|
|
- 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
|