ex_image.rs

Decode and transform an image. Decode, resize, and save a semantic image.

ExSDK source-ownedRustVision

Source

Example

1use anyhow::Context;
2use oa::{Engine, ImageFormat, Path, image};
3
4fn main() -> anyhow::Result<()> {
5 let engine = Engine::new().context("create OA engine")?;
6
7 let path = Path::asset_rel("image/visionTestPattern320x180.jpg");
8
9 let img = image::decode_file(&engine, &path, ImageFormat::Rgb)
10 .with_context(|| format!("decode {}", path.display()))?;
11 let small = image::resize(&img, 160, 90, image::InterpolationMode::Bilinear)?;
12 let adjusted = image::brightness_contrast(&small, 0.05, 1.1)?;
13
14 let matrix = adjusted.as_matrix();
15 let values = matrix.read_f32()?;
16
17 assert_eq!(matrix.shape(), [1, 3, 90, 160]);
18 assert_eq!(values.len(), 3 * 90 * 160);
19
20 let min = values.iter().copied().fold(f32::INFINITY, f32::min);
21 let max = values.iter().copied().fold(f32::NEG_INFINITY, f32::max);
22 println!("{:?} min={min:.4} max={max:.4}", matrix.shape());
23 Ok(())
24}
25