use ccvl::filter; use ccvl::image::*; fn main() -> std::process::ExitCode { let args = std::env::args().collect::>(); if args.len() != 3 { println!("Usage: {} IN OUT", args[0].as_str()); return std::process::ExitCode::FAILURE; } let input_path = args[1].as_str(); let output_path = args[2].as_str(); match Image::load::(input_path) { Err(Error::Invalid) => { println!("{} is not a valid image", input_path); std::process::ExitCode::FAILURE } Err(Error::Io(err)) => { println!("I/O error loading image {}: {}", input_path, err); std::process::ExitCode::FAILURE } Ok(img) => { let result = filter::canny(img.map(|p| Luminance::from(p))) .map(|p| p.into()); match result.save::(output_path) { Err(err) => { println!( "I/O error saving image {}: {}", output_path, err ); std::process::ExitCode::FAILURE } Ok(()) => std::process::ExitCode::SUCCESS, } } } }