Dossier

Brand-agnostic UVC PTZ Camera Library

Brand-agnostic UVC PTZ camera library for clinical operators.

Role
Senior Software Engineer
Company
Ceiba
Dates
2022–2026
Stack
C++ / DirectShow / OpenCV / Direct2D / C# interop / Python bindings

Highlights

  • Rebuilt a Logitech-specific camera control library into a brand-agnostic UVC implementation supporting any DirectShow-compatible PTZ camera
  • Implemented absolute-position pan/tilt/zoom, night-vision/IR mode switching, and persistent field-of-view calibration
  • Ran OpenCV feature detection during calibration to map screen coordinates to camera movements for "point-and-center" accuracy
  • Exposed the library through a Direct2D calibration UI, a C# wrapper, and Python bindings for downstream consumers
  • Deliberately discontinued the Logitech-specific predecessor after the UVC version reached parity and beyond

Problem

The previous library was Logitech-specific, which capped procurement: hospitals could only buy one vendor’s PTZ cameras, and that vendor was the expensive option. Replacing it required a brand-agnostic library that any UVC PTZ camera could drop into without breaking the “point-and-click on the screen, camera centers on that exact pixel” contract telehealth operators depended on.

Approach

Targeted DirectShow as the primary capture path on Windows — hardware enumeration, format negotiation, and frame delivery all through the DShow filter graph. PTZ control covers both modes: absolute positioning when the calibration step has produced a coordinate map, and relative deltas when the operator is driving live. OpenCV runs feature detection during the per-camera calibration pass to map screen coordinates to physical movement. The library exposes a Direct2D calibration UI, a C# wrapper, and Python bindings — so the same brand-agnostic core powers both the operator-facing tooling and the headless observation pipeline.

Result

Ten distinct UVC PTZ camera models verified and running in production, deployed across ~300 devices in 50 US hospitals. Command-to-movement latency is effectively instant. Bringing a new camera model online dropped from 1–2 weeks of engineering work to one day’s calibration pass.