Write kernel convolution example
This commit is contained in:
1 parent
dd8300ee7c
commit
d379f4ebe6
1 file changed
+38
@@ -0,0 +1,38 @@
|
|||||||
|
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,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user