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