Skip to main content

Python bindings for calibration-rs end-to-end camera calibration

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vision_calibration-0.7.0.tar.gz (725.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

vision_calibration-0.7.0-cp310-abi3-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.10+Windows x86-64

vision_calibration-0.7.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

vision_calibration-0.7.0-cp310-abi3-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file vision_calibration-0.7.0.tar.gz.

File metadata

  • Download URL: vision_calibration-0.7.0.tar.gz
  • Upload date:
  • Size: 725.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for vision_calibration-0.7.0.tar.gz
Algorithm Hash digest
SHA256 05af2b29381b1573e687447b7522c3756129c8bfffaf069f27a1f4b29d2e3cec
MD5 3ce313a297615e448a5d76e9be4d3605
BLAKE2b-256 15821f9ac286711742f2e0598b46e7e6f685dea43b9ecaafabdfd55fc2b6fca8

See more details on using hashes here.

Provenance

The following attestation bundles were made for vision_calibration-0.7.0.tar.gz:

Publisher: release-pypi.yml on VitalyVorobyev/calibration-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vision_calibration-0.7.0-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for vision_calibration-0.7.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d0e6768dc4ca8171ac15540fc9db3a01b1de348e9c51cf206f708d25eaeabde2
MD5 4efe5b41ed0290a639612c7227a4f82b
BLAKE2b-256 6aa2440eb3d79373e0bdf09df1ac1da47ce11f5e610d2f337aa86cb05230ce9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for vision_calibration-0.7.0-cp310-abi3-win_amd64.whl:

Publisher: release-pypi.yml on VitalyVorobyev/calibration-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vision_calibration-0.7.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for vision_calibration-0.7.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ae06e808d5fb7413509d3cccd1fbef49c8d44e33314dfb9aab54ccf01ab5cbe9
MD5 5456014424c421ba97dfaaacbe10efb1
BLAKE2b-256 49725653f304bf241dfe30c9ae35d6bbf309f27c9b2214c032ae9458fd92d523

See more details on using hashes here.

Provenance

The following attestation bundles were made for vision_calibration-0.7.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release-pypi.yml on VitalyVorobyev/calibration-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vision_calibration-0.7.0-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for vision_calibration-0.7.0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6db6567f1f4c56dd79ebbc4efe08395fdc67c29614c49200ebcff0c984c04441
MD5 9cb5ed4a9b2778cf71eab0deab820e80
BLAKE2b-256 59f537ca898fa1ab25c426196c322d4934e1868bc9d57fac8eaada604d4ca309

See more details on using hashes here.

Provenance

The following attestation bundles were made for vision_calibration-0.7.0-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release-pypi.yml on VitalyVorobyev/calibration-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page