#camera #cross-platform #capture #webcam

uiua-nokhwa

一个简单易用的跨平台Rust网络摄像头捕获库

2个版本

新版本 0.10.5 2024年8月16日
0.10.4 2024年8月16日

#223 in 多媒体

Download history 342/week @ 2024-08-16

每月342次下载
用于 uiua

Apache-2.0

465KB
8K SLoC

cargo version docs.rs version

nokhwa

Nokhwa(녹화): 韩语单词,意为“记录”。

一个简单易用的跨平台Rust网络摄像头捕获库

使用nokhwa

可以通过将其添加到您的 Cargo.toml 中将nokhwa添加到您的crate中。

[dependencies.nokhwa]
version = "0.10.0"
# Use the native input backends, enable WGPU integration
features = ["input-native", "output-wgpu"]

您可能只会使用由 Camera 结构体提供的功能。如果您需要更底层的访问,您可以选择使用在 nokhwa::backends::capture::* 中找到的原始捕获后端。

示例

// first camera in system
let index = CameraIndex::index(0); 
// request the absolute highest resolution CameraFormat that can be decoded to RGB.
let requested = RequestedFormat::<RgbFormat>::new(RequestedFormatType::AbsoluteHighestFrameRate);
// make the camera
let mut camera = Camera::new(index, requested).unwrap();

// get a frame
let frame = camera.frame().unwrap();
println!("Captured Single Frame of {}", frame.buffer().len());
// decode into an ImageBuffer
let decoded = frame.decode_image::<RgbFormat>().unwrap();
println!("Decoded Frame of {}", decoded.len());

examples 文件夹中可以找到使用 nokhwa 创建的命令行应用程序。

API支持

下表列出了当前的Nokhwa API支持。

  • “后端”列表示后端。
  • “输入”列表示从摄像头读取帧
  • “查询”列表示系统设备列表支持
  • “查询-设备”列表示读取设备功能
  • “平台”列表示此功能可在哪些平台上使用。
后端 输入 查询 查询-设备 平台
Video4Linux(input-native) Linux
MSMF(input-native) Windows
AVFoundation(input-native) Mac
OpenCV(input-opencv)^ Linux, Windows, Mac
WASM(input-wasm) 浏览器(Web)

✅: 正常工作, 🔮 : 试验性, ❌ : 不支持, 🚧: 计划/进行中

^ = 可能存在错误。也支持IP摄像头。

功能

默认功能不包含任何内容。以 input-* 开头的任何内容都是启用特定后端的特性。

input-* 特性

  • input-native:使用 V4L2(Linux)、MSMF(Windows)或 AVFoundation(Mac OS)。
  • input-opencv:启用 opencv 后端。(跨平台)
  • input-jscam:启用使用 JSCamera 结构体,该结构体使用浏览器 API。(Web)

相反,以 output-* 开头的任何内容都控制着某种输出(通常是来自摄像头的帧)的功能。

output-* 特性

  • output-wgpu:启用将帧直接复制到 wgpu 纹理的 API。
  • output-threaded:启用基于线程/回调的摄像头。

其他特性

  • decoding:启用 mozjpeg 解码。默认启用。
  • docs-only:文档特性。在 docs.rs 构建中启用。
  • docs-nolink:构建文档 链接到任何库。在 docs.rs 构建中启用。
  • test-fail-warning:在警告时失败。在 CI 中启用。

您可能想要挑选和选择以减少冗余。

问题

如果您正在提交问题,请确保

  • 它尚未被提交
  • 附加您正在执行的操作、您的环境、复现步骤和回溯。谢谢!

贡献

欢迎贡献!

  • 请使用 rustfmt 格式化所有代码,并遵守 clippy 检查(除非必须这样做)
  • 请限制使用 unsafe
  • 除非另有说明,所有贡献均受 Apache 2.0 许可证约束

最小服务 Rust 版本

nokhwa 可以在较旧的 rustc 版本上构建,但除了最新的稳定 Rust 之外,没有保证。

赞助商

请考虑捐赠!这有助于我不让我的父母失望!

依赖关系

约 2–37MB
约 548K SLoC