難しくないRustで画像表示そして画像認識(Rust+PyTorch)

Rust言語は難しいと思われているが、実際使ってみると実用的な優れた言語だと思う。
初心者殺しに会わないように、簡単にWindows表示ができて、描画、画像表示、画像認識ができるプログラムを紹介する。
RustでWindowを作成して、画像表示、描画をしたい、キーボードやマウスも操作したいとなると、標準のimage クレートではそこまでできない。
そこで適当なクレートを探そうとしても、多すぎて見つけるのが困難だ。そういう人にこの記事が参考になると嬉しい。
show-imageクレートを使うと、Window作成とキーボード操作が簡単になる。
分かりやすいように、エラー処理は省いている。プログラムは以下の様な感じになる。

use show_image::{ImageView, ImageInfo, create_window};
#[show_image::main]
fn main() -> Result<(), Box<dyn std::error::Error>> {
 // 事前にpixel_dataに画像をロードする
  let image = ImageView::new(ImageInfo::rgb8(1920, 1080), pixel_data);
  // Windowを作成して画像を表示
  let window = create_window("image", Default::default());
  window.set_image("image-001", image);
// ESCキーが押されたら終了
for event in window.event_channel() {
  if let event::WindowEvent::KeyboardInput(event) = event {
        println!("{:#?}", event);
        if event.input.key_code == Some(event::VirtualKeyCode::Escape) && event.input.state.is_pressed() {
            break;
        }
    } 
}
Ok(()) 
}

このshow-imageを使ってマンデルブロー・ナビゲータを作るとこうなる。
今回はWebAssembly は使ってないので、より高速な処理が可能になった。