projective-grid 0.10.1

Image-free, target-agnostic projective grid recovery: label 2D feature points with (i, j) lattice coordinates under perspective
Documentation
use projective_grid::{
    detect_grid, DetectionParams, DetectionRequest, Evidence, LatticeKind, LocalAxis,
    OrientedFeature, PointFeature,
};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut features = Vec::new();
    for v in 0..5 {
        for u in 0..5 {
            let x = 40.0 + u as f32 * 20.0 + v as f32 * 1.5;
            let y = 30.0 + v as f32 * 20.0;
            let source_index = features.len();
            features.push(OrientedFeature::new(
                PointFeature::new(source_index, nalgebra::Point2::new(x, y)),
                [
                    LocalAxis::new(0.0, Some(0.02)),
                    LocalAxis::new(std::f32::consts::FRAC_PI_2, Some(0.02)),
                ],
            ));
        }
    }

    let params = DetectionParams::default();
    let request = DetectionRequest::new(
        LatticeKind::Square,
        Evidence::Oriented2(&features),
        None,
        params,
    );
    let solution = detect_grid(request)?;
    println!("labelled corners: {}", solution.grid.entries.len());
    Ok(())
}