Skip to main content

PoseViz – 3D Human Pose and Mesh Visualizer

Multi-person, multi-camera 3D human pose and mesh visualization tool built using OpenGL (via ModernGL). As used in NLF and MeTRAbs visualizations.

This repo does not contain pose estimation code, only the visualization part.

Gist of Usage

import poseviz
import deltacamera

camera = deltacamera.Camera(...)

with poseviz.PoseViz(...) as viz:
    for frame in frames:
        bounding_boxes, poses3d = run_pose_estimation_model(frame)
        viz.update(frame=frame, boxes=bounding_boxes, poses=poses3d, camera=camera)

See also demo.py.

The main feature of this tool is that the graphical event loop is hidden from the library user. We want to write code in terms of the prediction loop of the human pose estimator, not from the point of view of the visualizer tool.

Behind the scenes, this is achieved through forking a dedicated visualization process and passing new scene information via multiprocessing queues.

Error Handling

When a requested output cannot be produced (the video writer fails, the camera trajectory cannot be saved, or the visualizer process dies), a poseviz.VisualizerError is raised in your prediction loop at the next API call, carrying the visualizer-side traceback. A requested video output to which zero frames were written also raises. Purely visual per-frame hiccups do not raise — they are logged, and only escalate to an error if they persist while an output is being written. If no output is requested (live demo use), the visualization stays best-effort and never interrupts your loop.

close() returns a list of poseviz.SequenceReport objects, one per output sequence, with the video path and the number of frames written.

Headless and GPU Notes

  • headless=True (or auto-detection when DISPLAY/WAYLAND_DISPLAY are unset) uses a standalone EGL context: no display server is needed, and on hybrid-GPU machines (e.g., AMD display GPU + NVIDIA compute GPU) the NVIDIA card is targeted for NVENC. There is no need to unset DISPLAY manually; the egl_device_index parameter overrides the device selection if needed.
  • gpu_encode=True (default) requires the OpenGL context to be on an NVIDIA GPU. In windowed mode on hybrid-GPU machines, the window usually lands on the display GPU; starting a video output then raises an error immediately, listing the remedies: start the process with __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia, use headless mode, or pass gpu_encode=False for CPU encoding.
  • gpu_frames=True accepts PyTorch CUDA tensors or any DLPack-compatible frames (CuPy, JAX, ...), keeping the whole decode → inference → visualization → encode chain on the GPU.

Installation

pip install poseviz

Then run demo.py to test if installation was successful.

Metadata

Release files for poseviz 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for poseviz 0.6.0
File Size Uploaded
poseviz-0.6.0.tar.gz 791.0 kB Details

Release files / poseviz-0.6.0.tar.gz

Download URL poseviz-0.6.0.tar.gz
Size 791.0 kB
Tags Source
SHA-256 checksum
How to use checksums
5f29a0b59e736362cf5ef93b3c38435d2f9377de043135ca492106e12afec4f7
BLAKE2b-256 checksum
How to use checksums
d321a79d6dafb6962ba57d2d3675bccd9d7979fcf06d986f17c20f8356eb60c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.1

1 release file

This release

0.6.0 This release

1 release file

0.5.0

1 release file

0.4.0

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.0

1 release file

0.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page