mistralrs_vision/
utils.rs

1use image::{DynamicImage, Pixel};
2
3pub(crate) fn empty_image(h: usize, w: usize) -> Vec<Vec<Vec<u8>>> {
4    vec![vec![vec![]; w]; h]
5}
6
7pub(crate) fn get_pixel_data(
8    n_channels: usize,
9    pixels: image::ImageBuffer<image::Rgba<u8>, Vec<u8>>,
10    h: usize,
11    w: usize,
12) -> Vec<Vec<Vec<u8>>> {
13    let mut pixel_data = empty_image(h, w);
14    for (x, y, pixel) in pixels.enumerate_pixels() {
15        pixel_data[y as usize][x as usize] = pixel.channels()[..n_channels].to_vec()
16    }
17    pixel_data
18}
19
20pub(crate) fn n_channels(image: &DynamicImage) -> usize {
21    image.color().channel_count() as usize
22}