如何在Rust中以纯黑白转换图片

时间:2019-07-17 10:23:26

标签: image-processing rust

我想使用Image板条箱将图片转换为纯黑白(例如无灰度),结果应该是具有0和255个RGB值的图片。

docs之后,我写了以下内容:

let img = image::open("photo.jpg").unwrap(); // Load picture
let gray_img = img.grayscale(); // Convert it

// Access a random pixel value
let px = gray_img.get_pixel(0,0);
println!("{:?}", pixel.data); // Print RGB array

这里的问题是,无论我打印什么像素,它都会给我灰度值。 那么,是否有将图像转换为纯黑白的功能?像Pillow的Python转换函数?

1 个答案:

答案 0 :(得分:2)

在这里,您可以首先构建灰度图像,然后将其抖动为黑白图像:

use image::{self, imageops::*};

let img = image::open("cat.jpeg").unwrap();
let mut img = img.grayscale();
let mut img = img.as_mut_luma8().unwrap();
dither(&mut img, &BiLevel);
img.save("cat.png").unwrap(); // this step is optional but convenient for testing

您当然应该正确地处理错误,而不仅仅是做unwrap