From 16ddd96c827aade1f1b08ab88b0a9600c9d37560 Mon Sep 17 00:00:00 2001 From: conglinyizhi Date: Sat, 7 Dec 2024 11:03:24 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(main):=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E4=BB=8E=E5=91=BD=E4=BB=A4=E8=A1=8C=E5=8F=82=E6=95=B0=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E6=91=84=E5=83=8F=E5=A4=B4=E8=AE=BE=E5=A4=87=E3=80=81?= =?UTF-8?q?=E5=88=86=E8=BE=A8=E7=8E=87=E5=92=8C=E5=B8=A7=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) 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; + } + } +}