✨ feat(main): 支持从命令行参数设置摄像头设备、分辨率和帧率
This commit is contained in:
parent
3e12d0bd6d
commit
16ddd96c82
27
src/main.rs
27
src/main.rs
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue