| Crates.io | calib-targets |
| lib.rs | calib-targets |
| version | 0.2.2 |
| created_at | 2025-12-28 10:11:27.732412+00 |
| updated_at | 2026-01-03 17:59:55.76362+00 |
| description | Main entry point crate for a collection of plain calibration target detectors built on top of ChESS corners |
| homepage | https://vitalyvorobyev.github.io/calib-targets-rs/ |
| repository | https://github.com/VitalyVorobyev/calib-targets-rs |
| max_upload_size | |
| id | 2008547 |
| size | 93,842 |

Fast, robust calibration target detection in Rust: chessboard, ChArUco, ArUco/AprilTag dictionaries, and marker boards.
TargetDetection output across detectors for consistent downstream processing.calib_targets::detect) that run ChESS corner detection for you (feature image, enabled by default).cargo add calib-targets image
use calib_targets::detect;
use calib_targets::ChessboardParams;
use image::ImageReader;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let img = ImageReader::open("board.png")?.decode()?.to_luma8();
let chess_cfg = detect::default_chess_config();
let params = ChessboardParams::default();
let result = detect::detect_chessboard(&img, &chess_cfg, params);
println!("detected: {}", result.is_some());
Ok(())
}
All detectors produce a TargetDetection (returned directly for chessboards and embedded in higher-level result structs elsewhere). Each LabeledCorner includes pixel position, optional grid coordinates, optional logical id, optional target-space position, and a detector-specific score.
detect::detect_chessboard or chessboard::ChessboardDetector.detect::detect_charuco or charuco::CharucoDetector.detect::detect_marker_board or marker::MarkerBoardDetector.aruco.image (default): enables calib_targets::detect helpers that use image::GrayImage and chess-corners.tracing: enables tracing output across the workspace crates.cargo run -p calib-targets --example detect_chessboard -- path/to/image.png
cargo run -p calib-targets --example detect_charuco -- path/to/image.png
cargo run -p calib-targets --example detect_markerboard -- path/to/image.png
Python bindings are provided via crates/calib-targets-py (module name
calib_targets). See crates/calib-targets-py/README.md for setup.
pip install maturin
maturin develop
python crates/calib-targets-py/examples/detect_charuco.py path/to/image.png
Notes:
detect_charuco requires params and the board lives in params.board.target_position is populated only when a board layout includes a valid
cell size and alignment succeeds (for marker boards, set
params.layout.cell_size or params["layout"]["cell_size"]).calib_targets::core – core types and homographies.calib_targets::chessboard – chessboard detection.calib_targets::aruco – ArUco/AprilTag dictionaries and decoding.calib_targets::charuco – ChArUco alignment and IDs.calib_targets::marker – checkerboard + circle marker boards.