CameraKit is a CLI-first Python package for camera calibration and synchronized capture.
Current package version: v2.0.0
- Unified CLI with subcommands:
devices,init,calibrate,capture,report - Camera discovery with supported resolution/FPS/codec probing
- Checkerboard-based calibration (intrinsics + optional extrinsics)
- Optional fisheye intrinsics/extrinsics path in calibration workflow
- Calibration TOML outputs with separate per-camera errors:
intrinsics_error_pxextrinsics_error_px
- Synchronized software capture with per-trial recordings
- Calibration summary reporting via CLI
pip install camerakitFor capture workflows, use GUI-enabled OpenCV (opencv-python).
opencv-python-headless intentionally disables the interactive capture command.
# 1) Create a project
camerakit init --path /path/to/project --cameras 2
# 2) List devices
camerakit devices --max-cameras 6
# 3) Run calibration
camerakit calibrate --config /path/to/project
# 4) Summarize calibration output
camerakit report --input /path/to/project/calibration/Calib_board_outer.toml
# 5) Record synchronized videos
camerakit capture --data-dir data --max-cameras 6Project layout example:
project/
Config.toml
calibration/
intrinsics/
cam_00/ intrinsics.mp4
cam_01/ intrinsics.mp4
extrinsics/
cam_00/ extrinsics.png
cam_01/ extrinsics.png
from camerakit.calibration import run_calibration
from camerakit.utils import CameraEnumerator
run_calibration("/path/to/project")
cameras = CameraEnumerator(max_cameras=6).list()Detailed Sphinx docs are in docs/. Build locally with:
pip install -r docs/requirements.txt
make -C docs htmlOpen docs/_build/html/index.html.
See CONTRIBUTING.md for architecture notes, logging conventions, documentation workflow, and roadmap priorities.
See RELEASE_NOTES.md.
Some portions of this project include code derived from third-party sources under their original licenses. See:
CameraKit is licensed under the MIT License. See LICENSE, plus third-party notices and licenses listed above.