Есть ли способ конвертировать ndarray_image в ndarray :: Array3 :: в Rust используя операции из ndarray crate? - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь применить Rust для задач машинного обучения. В таких задачах часто требуется выполнять преобразование между различными форматами данных (чередующиеся, планарные) и точностью (u8, i32, f32).

Я придумал следующий код на данный момент:

let input_image = ndarray_image::open_image("test_data/cat.png", ndarray_image::Colors::Bgr).unwrap();
let dims = input_image.dim();
let width = dims.0;
let height = dims.1;
let channels = dims.2;
let len = width * height * channels;

let mut input_image_f32 = Array3::<f32>::zeros((channels, height, width).f());
for c in 0..channels {
    for h in 0..height {
        for w in 0..width {
            input_image_f32[[c, h, w]] = input_image[[h, w, c]] as f32;
        }
    }
}

Я думаю, что должен быть лучший способ сделать то, что мне нужно, без необходимости l oop над контейнерами. Буду очень признателен, если кто-нибудь поделится идеями о том, как можно улучшить код.

...