diff --git a/src/main.rs b/src/main.rs index 02d9ee0..03f8ef7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,5 @@ extern crate rscam; -use std::time::Instant; +use std::{env, time::Instant}; use fltk::{ app::App, @@ -12,6 +12,12 @@ use fltk::{ use rscam::{Camera, Config}; fn main() { + let args: Vec = env::args().collect(); + println!("{:?}", args); + let camera_device = &args[1]; + let w = args[2].clone(); + let h = args[3].clone(); + let fps = args[4].clone(); let mut camera_open = false; let app = App::default(); let mut camera_window = Window::new(100, 100, 400, 300, "Camera Video Output Window"); @@ -24,14 +30,14 @@ fn main() { color_window.show(); // app.run().unwrap(); // 打开摄像头设备 - let mut camera = Camera::new("/dev/video0").unwrap(); + let mut camera = Camera::new(camera_device).unwrap(); // 配置摄像头参数 match camera.start(&Config { // use command 'v4l2-ctl --list-formats-ext' see more... - interval: (1, 210), // 设置帧率为 30fps - resolution: (640, 400), // 设置分辨率为 640x480 - format: b"MJPG", // 设置图像格式为 MJPG + interval: (1, parse(fps)), // 设置帧率为 30fps + resolution: (parse(w), parse(h)), // 设置分辨率为 640x480 + format: b"MJPG", // 设置图像格式为 MJPG ..Default::default() }) { Ok(_) => camera_open = true, @@ -74,3 +80,14 @@ fn main() { } } } + +/// 从 args 传入的数字转换为 u32 +fn parse(str: String) -> u32 { + match str.parse::() { + Ok(data) => return data, + Err(e) => { + eprintln!("Error:${}", e); + return 0; + } + } +}