Nokhwa(녹화):韩语单词,意为"记录"。
一个简单易用的跨平台 Rust 网络摄像头捕获库
可以通过在 Cargo.toml 中添加以下内容来将 Nokhwa 添加到你的 crate 中:
[dependencies.nokhwa] version = "0.10.0" # 使用原生输入后端,启用 WGPU 集成 features = ["input-native", "output-wgpu"]
大多数情况下,你只需使用 Camera 结构体提供的功能。如果需要更低级别的访问,可以选择使用 nokhwa::backends::capture::* 中的原始捕获后端。
// 系统中的第一个摄像头 let index = CameraIndex::Index(0); // 请求可解码为 RGB 的最高分辨率 CameraFormat let requested = RequestedFormat::new::<RgbFormat>(RequestedFormatType::AbsoluteHighestFrameRate); // 创建摄像头 let mut camera = Camera::new(index, requested).unwrap(); // 获取一帧 let frame = camera.frame().unwrap(); println!("捕获单帧大小为 {}", frame.buffer().len()); // 解码为 ImageBuffer let decoded = frame.decode_image::<RgbFormat>().unwrap(); println!("解码后帧大小为 {}", decoded.len());
examples 文件夹中有一个使用 nokhwa 制作的命令行应用。
下表列出了当前 Nokhwa API 的支持情况。
Backend 列表示后端。Input 列表示从摄像头读取帧的支持。Query 列表示系统设备列表支持。Query-Device 列表示读取设备功能的支持。Platform 列表示该功能可用的平台。| 后端 | 输入 | 查询 | 设备查询 | 平台 |
|---|---|---|---|---|
Video4Linux(input-native) | ✅ | ✅ | ✅ | Linux |
MSMF(input-native) | ✅ | ✅ | ✅ | Windows |
AVFoundation(input-native) | ✅ | ✅ | ✅ | Mac |
OpenCV(input-opencv)^ | ✅ | ❌ | ❌ | Linux, Windows, Mac |
WASM(input-wasm) | ✅ | ✅ | ✅ | 浏览器(Web) |
✅: 可用, 🔮 : 实验性, ❌ : 不支持, 🚧: 计划中/进行中
^ = 可能存在 bug。同时支持 IP 摄像头。
默认特性不包含任何内容。以 input-* 开头的特性用于启用特定后端。
input-* 特性:
input-native:使用 V4L2(Linux)、MSMF(Windows) 或 AVFoundation(Mac OS)input-opencv