Skip to content
Skip to content
Modules Camera

Version 1.0.0 · Apache-2.0 · C++, optional Python

Holoscan Camera

Holoscan Camera brings camera frames into a Holoscan SDK 5 graph. Pick the backend that matches your camera and host: V4L2 for standard Linux devices, NvSIPL for NvSIPL-managed cameras on Jetson and IGX, or Argus for ISP-processed images on Jetson. Each backend ships with a reference application you can use to validate the graph and capture frames.

At a glance

Packageholoscan-camera
Version1.0.0
C++ namespaceholoscan::camera
Pythonholoscan_camera.operators.V4l2CaptureOp (optional)
Holoscan SDK5.0.0 or later with sensor_io, tested with 5.0.0
CUDA13.x
Platformsx86_64, aarch64
LicenseApache-2.0
MaintainerHoloscan Team, NVIDIA
Debian packageholoscan-camera

Operators

Operator Identifier What it captures
V4l2CaptureOp v4l2_capture_op Packed YUYV frames from Linux V4L2 devices into host, pinned-host, or CUDA device memory
SIPLCaptureOp sipl_capture_op RAW10 or NV12 frames from NvSIPL-managed cameras on Jetson and IGX (aarch64 only)
ArgusCaptureOp argus_capture_op ISP-processed Jetson Argus images with sensor metadata and bounded native buffers

Link holoscan::camera to get every operator enabled in your build, or link a single backend: holoscan::v4l2_capture_op, holoscan::sipl_capture_op, or holoscan::argus_capture_op.

Supported platforms

Operator Ubuntu 24.04 DGX OS IGX Thor + IGX OS 2.0 Jetson Orin + JetPack 7.2.1 Jetson Thor + JetPack 7.2.1
V4l2CaptureOp Supported Supported Supported Supported Supported
SIPLCaptureOp — — Build from source Supported Supported
ArgusCaptureOp — — — Supported —

Camera support also depends on the host BSP, camera driver, and development libraries. Installing the SDK alone does not make a camera compatible.

Reference applications

Application Use it to
holoscan_camera_v4l2 Validate a graph or stream V4L2 frames, in C++ or Python
holoscan_camera_argus Receive Jetson Argus frames and metadata
sipl_frame_saver Save camera frames and metadata to disk
sipl_stereo_monitor Monitor a stereo rig and cross-camera timing

Configuration

Backend Operator configuration Reference application
V4L2 Constructor arguments for device, dimensions, frame rate, coordinate frame, and memory placement CLI options such as --device and --memory-kind
SIPL A shared SIPLCaptureService plus per-camera operator arguments CLI options and vendor JSON platform files selected with --json-config
Argus An ArgusCaptureConfig value CLI options for camera and mode selection, image size, and memory placement

Camera operators are configured in C++ when you build the graph. The module has no YAML loader, so an application that uses YAML parses its own settings and passes the values to the constructors.

Use it in an application

Start with V4L2. It does not need the SIPL or Argus development libraries.

# Build and validate the C++ V4L2 example graph without a camera.
./holoscan_camera run holoscan_camera_v4l2 --language cpp

# Run the reference application's tests.
./holoscan_camera test holoscan_camera_v4l2 --language cpp

With the Python bindings, a compatible NVIDIA GPU, and display access, preview a live camera:

./holoscan_camera run holoscan_camera_v4l2 preview --language python \
  --run-args='--device /dev/video0 --width 640 --height 480 --fps 30'

After installing the package, link it from CMake:

find_package(holoscan-camera CONFIG REQUIRED)
target_link_libraries(my_pipeline PRIVATE holoscan::camera)

To build from source, you need Holoscan SDK 5.0 with sensor_io, CUDA 13, CMake 4.0 or later, and a C++20 compiler.

Source is in the Holoscan Camera repository.

All modules