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.5.1.tar.gz (468.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.5.1-cp310-abi3-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.10+Windows x86-64

vision_calibration-0.5.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

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

vision_calibration-0.5.1-cp310-abi3-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: vision_calibration-0.5.1.tar.gz
  • Upload date:
  • Size: 468.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.5.1.tar.gz
Algorithm Hash digest
SHA256 57ae86291bc20ee5feb4409591fe3edfca69b12f8b7b70f7c395f51d87c28fc0
MD5 3783fe37e2e2dc70477e2d5d9c2f1ba3
BLAKE2b-256 16263c9fb8826970af43573b0c0519f8db367eee4e432700f61c0d6a0328a4c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for vision_calibration-0.5.1.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.5.1-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for vision_calibration-0.5.1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 fb929a7395882605ca98ed545bdb006b7a53d7006678e74e30c72d12df40ebb3
MD5 3366deb96ee958b3250ba74427a363df
BLAKE2b-256 20f0d393353c3ea5e71a4d3030e3988827e5d3e0f318e8c8708733957dab72e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for vision_calibration-0.5.1-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.5.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for vision_calibration-0.5.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 50901dfb4b197d90d5b477329f6e67a830736e04b1bafaac1247a7f9f507b02d
MD5 edab4ef4ec10621fdadb48e8f41a4c04
BLAKE2b-256 56a9af7fccafffcc7aac2c0f639da0caaf5c1ce045d729a5a9f4c88a7e1ea53c

See more details on using hashes here.

Provenance

The following attestation bundles were made for vision_calibration-0.5.1-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.5.1-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for vision_calibration-0.5.1-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 301e4f05e858bb53a17e21d6f25f7c9d2511f3fee5a82b3e34365b6da7409e75
MD5 57836cad0fb28cdeb850915727fd5da1
BLAKE2b-256 c0424fa7b123daa41bbb348bc21c4ca24be96fd1014cdfce3b4071fd25d070c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for vision_calibration-0.5.1-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