Skip to main content

vision-calibration-py

Python bindings for calibration-rs.

This crate exposes high-level calibration workflows from vision-calibration:

  • planar intrinsics
  • single-camera hand-eye
  • rig extrinsics
  • rig hand-eye
  • laserline device
  • scheimpflug intrinsics

Build locally

maturin develop -m crates/vision-calibration-py/Cargo.toml

Python package

The Python package name is vision_calibration.

import vision_calibration as vc

print(vc.__version__)

# Build Python-native dataset/config objects with docstrings:
obs = vc.Observation(
    points_3d=[(0.0, 0.0, 0.0), (0.1, 0.0, 0.0), (0.1, 0.1, 0.0), (0.0, 0.1, 0.0)],
    points_2d=[(100.0, 100.0), (200.0, 100.0), (200.0, 200.0), (100.0, 200.0)],
)
dataset = vc.PlanarDataset(views=[vc.PlanarView(observation=obs)] * 3)
config = vc.PlanarCalibrationConfig(
    max_iters=80,
    robust_loss=vc.robust_huber(1.0),
)

result = vc.run_planar_intrinsics(dataset, config)
print(result.mean_reproj_error)

Scheimpflug workflow:

import vision_calibration as vc

obs = vc.Observation(
    points_3d=[(0.0, 0.0, 0.0), (0.1, 0.0, 0.0), (0.1, 0.1, 0.0), (0.0, 0.1, 0.0)],
    points_2d=[(100.0, 100.0), (200.0, 100.0), (200.0, 200.0), (100.0, 200.0)],
)
dataset = vc.PlanarDataset(views=[vc.PlanarView(observation=obs)] * 3)
config = vc.ScheimpflugIntrinsicsCalibrationConfig(
    fix_scheimpflug={"tilt_x": False, "tilt_y": False}
)
result = vc.run_scheimpflug_intrinsics(dataset, config)
print(result.camera.sensor)

Migration: hard break to typed high-level API

High-level runner functions now require typed dataset/config objects. Raw mapping/list payloads are no longer accepted by:

  • run_planar_intrinsics
  • run_scheimpflug_intrinsics
  • run_single_cam_handeye
  • run_rig_extrinsics
  • run_rig_handeye
  • run_laserline_device

Before (no longer supported):

import vision_calibration as vc

result = vc.run_scheimpflug_intrinsics(
    {"views": [...]},
    {"max_iters": 80},
)

After (typed high-level API):

import vision_calibration as vc

dataset = vc.PlanarDataset(views=[...])
config = vc.ScheimpflugIntrinsicsCalibrationConfig(max_iters=80)
result = vc.run_scheimpflug_intrinsics(dataset, config)

If you still need raw serde payload control for migration/interop, use low-level helpers from vision_calibration._api (for example _run_scheimpflug_intrinsics_raw).

Runnable Python examples

Python workflow examples live in crates/vision-calibration-py/examples/ and mirror the Rust examples from crates/vision-calibration/examples/.

Install detector dependencies for real-image examples:

./.venv/bin/python -m pip install "vision-calibration[examples]"

Run all:

for f in crates/vision-calibration-py/examples/*.py; do ./.venv/bin/python "$f"; done

Run individual examples:

./.venv/bin/python crates/vision-calibration-py/examples/planar_synthetic.py
./.venv/bin/python crates/vision-calibration-py/examples/planar_real.py
./.venv/bin/python crates/vision-calibration-py/examples/stereo_session.py
./.venv/bin/python crates/vision-calibration-py/examples/stereo_charuco_session.py
./.venv/bin/python crates/vision-calibration-py/examples/handeye_synthetic.py
./.venv/bin/python crates/vision-calibration-py/examples/handeye_session.py
./.venv/bin/python crates/vision-calibration-py/examples/rig_handeye_synthetic.py
./.venv/bin/python crates/vision-calibration-py/examples/laserline_device_session.py

Notes:

  • planar_real.py, stereo_session.py, stereo_charuco_session.py, and handeye_session.py run detector-based corner extraction from real images using calib-targets.
  • vision_calibration.types is low-level compatibility surface for advanced interop only; prefer typed dataclasses/models for new code.

Metadata

Release files for vision-calibration 0.8.3

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

Source distribution (sdist)

Source distribution for vision-calibration 0.8.3
File Size Uploaded
vision_calibration-0.8.3.tar.gz 728.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for vision-calibration 0.8.3
File Interpreter ABI Platform
vision_calibration-0.8.3-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
vision_calibration-0.8.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details
vision_calibration-0.8.3-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details

Total release size: 7.1 MB

Release files / vision_calibration-0.8.3.tar.gz

Download URL vision_calibration-0.8.3.tar.gz
Size 728.4 kB
Tags Source
SHA-256 checksum
How to use checksums
76758bd9cd2f194c3ed2510518d862cbdfd24bbf770420600dfb34f42dcd7b29
BLAKE2b-256 checksum
How to use checksums
44fcfce65802fbf373d44e903fe4b32f376cd6a47dd0c3e68a528ae0b2fb3d3e
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 Sep 28, 2026.

Transparency log

Release files / vision_calibration-0.8.3-cp310-abi3-win_amd64.whl

Download URL vision_calibration-0.8.3-cp310-abi3-win_amd64.whl
Size 2.1 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
b04ab1fd5a56031d5d9f13f23e01e6d5f3b1b34758a522d2067c64ee043263c2
BLAKE2b-256 checksum
How to use checksums
8f47b2eaee602ce660d5714bac00e410d3f00a370e52ff4f3ccc466a4c83801b
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 Sep 28, 2026.

Transparency log

Release files / vision_calibration-0.8.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL vision_calibration-0.8.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.5 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
d485b1dd3a9215f485aded7c0bdb063ae566b34d81fefab55d7608c85f4d2758
BLAKE2b-256 checksum
How to use checksums
3c7f0cd05b87a897bd695488533424679780bf2c39e1729e888b83af6cbcc9a7
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 Sep 28, 2026.

Transparency log

Release files / vision_calibration-0.8.3-cp310-abi3-macosx_11_0_arm64.whl

Download URL vision_calibration-0.8.3-cp310-abi3-macosx_11_0_arm64.whl
Size 1.7 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7b3d8df4bf50b60a2c5f93796ac5ada3a4d7b8ddfed00fe07e94b4579f1597e7
BLAKE2b-256 checksum
How to use checksums
a44086264e2cd5c0f3f8c1bdc31f9160202108405ce3251bced90a74631bbd72
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 Sep 28, 2026.

Transparency log

Release history Release notifications | RSS feed

0.9.0

4 release files

This release

0.8.3 This release

4 release files

0.8.2

4 release files

0.8.1

4 release files

0.8.0

4 release files

0.7.0

4 release files

0.6.0

4 release files

0.5.1

4 release files

0.3.0

4 release files

0.2.0

4 release files

0.1.4

4 release files

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