Files
ccvl/examples/convolution.rs
T
2026-10-25 22:24:52 +00:00

39 lines
1.2 KiB
Rust

use ccvl::{image::*, kernel::*};
fn main() -> std::process::ExitCode {
let args = std::env::args().collect::<Vec<String>>();
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::<Farbfeld>(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 kernel =
[[1.0, 1.0, 1.0], [1.0, 1.0, 1.0], [1.0, 1.0, 1.0]];
let result = kernel.convolve(&img);
match result.save::<Farbfeld>(output_path) {
Err(err) => {
println!(
"I/O error saving image {}: {}",
output_path, err
);
std::process::ExitCode::FAILURE
}
Ok(()) => std::process::ExitCode::SUCCESS,
}
}
}
}