mod common; use ccvl::*; fn draw(contour: &contour::Contour, img: &mut image::Image) { let n = contour.vertices.len(); for i in 0..n { let (x0, y0) = contour.vertices[i]; let (x1, y1) = contour.vertices[(i + 1) % n]; let colour = match contour.kind { contour::Kind::Outer => colours::GREEN, contour::Kind::Inner => colours::BLUE, }; draw::line(x0, y0, x1, y1, img, colour); } } fn main() -> std::process::ExitCode { common::process_image(|mut img| { let greyscale = img.map(|p| image::Luminance::from(p)); let thresholded = filter::threshold_auto(greyscale); let contours = contour::find(thresholded); for contour in contours { draw(&contour, &mut img); } img }) }