Captures frames from a V4L2 camera and publishes them as std/media/v1/Image: an Arrow struct of width, height, encoding and data, so a receiver needs nothing from the message metadata. For a compressed encoding the recorded dimensions are the image's, not the length of the payload. Based on opencv-video-capture from dora-hub, with three changes. The output is the typed image struct rather than a flat UInt8 buffer plus metadata. Camera selection by id reads /dev/v4l/by-id/ only; the upstream macOS system_profiler and Windows PowerShell enumeration is not carried. CAPTURE_FRAMES bounds a run so a test ends on its own, in place of upstream's ten-second CI cutoff -- a timeout would have made the CI step exit non-zero. CI=true keeps a failed capture from raising, publishing a labelled black frame instead, which is what lets dataflow.yml run on a machine with no camera. Two dataflows, run one at a time, as dora has no cross-dataflow wiring: dataflow.yml is the camera alone and the CI gate; dataflow_view.yml wires it into dora-image-view and is not run by CI, since it fetches that node over the network and needs a tag to exist there.
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
# The camera into the viewer: the end-to-end check of the pair.
|
||||
#
|
||||
# Not run by CI. It fetches dora-image-view over the network, and it needs a
|
||||
# tag to exist in that repository; CI validates and runs dataflow.yml, which
|
||||
# needs neither.
|
||||
strict_types: true
|
||||
|
||||
nodes:
|
||||
- id: camera
|
||||
path: dora-webcam
|
||||
build: pip install .
|
||||
inputs:
|
||||
tick: dora/timer/millis/33
|
||||
outputs:
|
||||
- image
|
||||
|
||||
- id: view
|
||||
git: ssh://git@gitea.liria.cl:5001/liria/dora-image-view.git
|
||||
tag: v0.1.0
|
||||
build: pip install .
|
||||
path: dora-image-view
|
||||
inputs:
|
||||
image: camera/image
|
||||
Reference in New Issue
Block a user