feat(main): 支持从命令行参数设置摄像头设备、分辨率和帧率

This commit is contained in:
conglinyizhi 2024-12-07 11:03:24 +08:00
parent 3e12d0bd6d
commit 16ddd96c82
1 changed files with 22 additions and 5 deletions

View File

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