4 个版本
0.1.3 | 2022 年 10 月 12 日 |
---|---|
0.1.2 | 2022 年 10 月 11 日 |
0.1.1 | 2022 年 10 月 11 日 |
0.1.0 | 2022 年 10 月 11 日 |
#1760 在 硬件支持
1.5MB
26K SLoC
raspicam-rs
Rust 对神奇的 C++ raspicam 库的绑定(可选 OpenCV 工具)!
这是我之前参与的一个基于 Rust 的机器人项目,该项目需要高帧率、低延迟和全彩支持: ez-aquarii
先决条件
您必须安装 32 位版本。Raspberry Pi 摄像头库在 64 位安装上无法工作。请参阅:https://github.com/raspberrypi/userland/issues/688
先决条件之一是您必须编译 raspicam 库并将其安装。此存储库有一个安装脚本,方便您一键完成所有操作
curl https://raw.githubusercontent.com/bluskript/raspicam-rs/master/install.sh | sudo bash
安装依赖项
sudo apt install clang libclang-dev
如果您使用 OpenCV 集成,还需安装 libopencv-dev
并在 crate 中启用 OpenCV 功能
raspicam-rs = { version = "0.1.2", features = ["opencv"] }
opencv = "0.70.0"
示例用法:展示如何捕获单个图像并将其保存
use image::RgbImage;
use raspicam_rs::{
bindings::{RASPICAM_EXPOSURE, RASPICAM_FORMAT},
RaspiCam,
};
fn main() {
RaspiCam::new();
let mut raspicam = raspicam_rs::RaspiCam::new();
raspicam
.set_capture_size(480, 480)
.set_frame_rate(90)
.set_format(RASPICAM_FORMAT::RASPICAM_FORMAT_RGB)
.open(true)
.unwrap();
let img = RgbImage::from_raw(480, 480, raspicam.grab().unwrap().to_vec()).unwrap();
img.save("frame.png").unwrap();
}
如何配置
这些绑定使用类似于构建器模式的机制来配置摄像头。您可以连续执行配置命令
let mut raspicam = raspicam_rs::RaspiCam::new();
raspicam
.set_brightness(50)
.set_contrast(0)
.set_exposure(RASPICAM_EXPOSURE::RASPICAM_EXPOSURE_OFF)
.set_format(RASPICAM_FORMAT::RASPICAM_FORMAT_RGB)
.set_sensor_mode(7)
.open(true);
如果直接没有相应的方法,您可以像这样调用内部 C++ 对象的方法
let mut camera = raspicam_rs::RaspiCam::new();
raspicam.obj.pin_mut().startCapture();
实现高 FPS、低延迟和全彩
根据我的经验,通过使用低分辨率(例如 480x480)、传感器模式 7、快门速度 15000 和设置帧率为 90,可以实现高 FPS 全彩实时处理
低延迟摄像头捕获的实际演示(此库之前的版本,但可以实现相同的结果): 查看这里
依赖关系
~2.6–7.5MB
~134K SLoC