diff --git a/src/main.rs b/src/main.rs index 58113d3..937f620 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,6 +3,7 @@ use fltk::{ app::App, enums::ColorDepth, frame::Frame, + image::RgbImage, prelude::{GroupExt, WidgetBase, WidgetExt}, window::Window, }; @@ -32,6 +33,8 @@ fn main() { eprint!("Open Camera Error:{}", e) } } + let mut w = 0 as i32; + let mut h = 0 as i32; if camera_open { loop { // 捕获一帧图像 @@ -39,14 +42,12 @@ fn main() { Ok(data) => { let img = image::load_from_memory(&data).unwrap(); let rgb_data = img.to_rgb8(); - - let fltk_image = fltk::image::RgbImage::new( - &rgb_data.as_raw(), - rgb_data.width() as i32, - rgb_data.height() as i32, - ColorDepth::Rgb8, - ) - .unwrap(); + if w == 0 { + w = rgb_data.width() as i32; + h = rgb_data.height() as i32; + } + let fltk_image = + RgbImage::new(&rgb_data.as_raw(), w, h, ColorDepth::Rgb8).unwrap(); frame.set_image(Some(fltk_image)); frame.redraw(); }