🐛 fix(main): 修复摄像头打开错误处理,

在 `main` 函数中,添加了对摄像头打开错误的处理逻辑。如果摄像头打开失败,会输出错误信息并跳过后续的图像捕获和显示操作。
This commit is contained in:
conglinyizhi 2024-12-07 02:28:48 +08:00
parent c928f2be91
commit e5fc45fe2e
1 changed files with 37 additions and 33 deletions

View File

@ -7,9 +7,9 @@ use fltk::{
window::Window, window::Window,
}; };
use rscam::{Camera, Config}; use rscam::{Camera, Config};
use std::io;
fn main() -> io::Result<()> { fn main() {
let mut camera_open = false;
let app = App::default(); let app = App::default();
let mut wind = Window::new(100, 100, 400, 300, "Hello from rust"); let mut wind = Window::new(100, 100, 400, 300, "Hello from rust");
let mut frame = Frame::default_fill(); let mut frame = Frame::default_fill();
@ -20,37 +20,41 @@ fn main() -> io::Result<()> {
let mut camera = Camera::new("/dev/video0").unwrap(); let mut camera = Camera::new("/dev/video0").unwrap();
// 配置摄像头参数 // 配置摄像头参数
camera match camera.start(&Config {
.start(&Config { interval: (1, 30), // 设置帧率为 30fps
interval: (1, 30), // 设置帧率为 30fps resolution: (640, 480), // 设置分辨率为 640x480
resolution: (640, 480), // 设置分辨率为 640x480 format: b"MJPG", // 设置图像格式为 MJPG
format: b"MJPG", // 设置图像格式为 MJPG ..Default::default()
..Default::default() }) {
}) Ok(_) => camera_open = true,
.unwrap(); Err(e) => {
eprint!("Open Camera Error:{}", e)
loop { }
// 捕获一帧图像 }
match camera.capture() { if camera_open {
Ok(data) => { loop {
let img = image::load_from_memory(&data).unwrap(); // 捕获一帧图像
let rgb_data = img.to_rgb8(); match camera.capture() {
Ok(data) => {
let fltk_image = fltk::image::RgbImage::new( let img = image::load_from_memory(&data).unwrap();
&rgb_data.as_raw(), let rgb_data = img.to_rgb8();
rgb_data.width() as i32,
rgb_data.height() as i32, let fltk_image = fltk::image::RgbImage::new(
ColorDepth::Rgb8, &rgb_data.as_raw(),
) rgb_data.width() as i32,
.unwrap(); rgb_data.height() as i32,
frame.set_image(Some(fltk_image)); ColorDepth::Rgb8,
frame.redraw(); )
} .unwrap();
Err(e) => { frame.set_image(Some(fltk_image));
eprintln!("捕获错误: {}", e); frame.redraw();
continue; }
} Err(e) => {
eprintln!("捕获错误: {}", e);
continue;
}
}
app.wait();
} }
app.wait();
} }
} }