nokhwa

nokhwa

Rust跨平台网络摄像头库简单易用

nokhwa是一个跨平台Rust网络摄像头库,支持Linux、Windows、Mac和Web浏览器。它提供多种后端如Video4Linux、MSMF和AVFoundation,实现帧捕获、设备查询和图像解码等功能。nokhwa通过高级API和低级访问,结合灵活的特性配置,使开发者能够便捷地创建摄像头应用。

Rust摄像头跨平台视频捕捉开源库Github开源项目

货物版本 docs.rs 版本

nokhwa

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

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

使用 nokhwa

可以通过在 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 制作的命令行应用。

API 支持

下表列出了当前 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:启用 opencv 后端(跨平台)
  • input-jscam:启用 JSCamera 结构体,使用浏览器 API(Web)

相应地,以 output-* 开头的特性控制输出(通常是来自摄像头的帧)

output-* 特性:

  • output-wgpu:启用 API 以直接将帧复制到 wgpu 纹理中。
  • 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 外,不保证其他版本。

赞助商

请考虑捐赠!这有助于我在父母面前不那么像个失败者!

编辑推荐精选

OpenManus

OpenManus

一个具备多种工具和代理功能,可用于解决复杂任务规划、网络搜索、浏览器操作等的项目。

OpenManus 是一个功能强大的开源项目,提供了丰富的工具和代理机制。包含规划工具、多种搜索引擎、浏览器操作工具等,能帮助开发者高效解决复杂任务的规划、网络信息搜索以及浏览器自动化操作等问题。支持多种语言,拥有清晰的文档和代码结构,易于集成和扩展,适用于各类需要自动化任务处理的场景。

MarkItDown

MarkItDown

一个支持多种格式转换的工具库

MarkItDown 是一个强大的 Python 工具库,专注于文档格式转换。它能够处理多种类型的文件,如 HTML、Wikipedia 页面以及 Bing 搜索结果页等,将其转换为 Markdown 格式。该项目支持插件扩展,提供了清晰的接口和丰富的功能,为开发者和文档处理人员提供了便捷、高效的文档转换解决方案,能有效提升文档处理效率,是文档转换领域的优秀选择。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
OmniParser

OmniParser

帮助AI理解电脑屏幕 纯视觉GUI元素的自动化解析方案

开源工具通过计算机视觉技术实现图形界面元素的智能识别与结构化处理,支持自动化测试脚本生成和辅助功能开发。项目采用模块化设计,提供API接口与多种输出格式,适用于跨平台应用场景。核心算法优化了元素定位精度,在动态界面和复杂布局场景下保持稳定解析能力。

Github开源项目OmniParser界面解析交互区域检测
Grok3

Grok3

埃隆·马斯克旗下的人工智能公司 xAI 推出的第三代大规模语言模型

Grok3 是由埃隆·马斯克旗下的人工智能公司 xAI 推出的第三代大规模语言模型,常被马斯克称为“地球上最聪明的 AI”。它不仅是在前代产品 Grok 1 和 Grok 2 基础上的一次飞跃,还在多个关键技术上实现了创新突破。

腾讯元宝

腾讯元宝

腾讯自研的混元大模型AI助手

腾讯元宝是腾讯基于自研的混元大模型推出的一款多功能AI应用,旨在通过人工智能技术提升用户在写作、绘画、翻译、编程、搜索、阅读总结等多个领域的工作与生活效率。

AI助手热门AI工具AI对话腾讯元宝智能体 AI 办公助手
Windsurf Wave 3

Windsurf Wave 3

Windsurf Editor推出第三次重大更新Wave 3

新增模型上下文协议支持与智能编辑功能。本次更新包含五项核心改进:支持接入MCP协议扩展工具生态,Tab键智能跳转提升编码效率,Turbo模式实现自动化终端操作,图片拖拽功能优化多模态交互,以及面向付费用户的个性化图标定制。系统同步集成DeepSeek、Gemini等新模型,并通过信用点数机制实现差异化的资源调配。

AI IDE
Cursor

Cursor

增强编程效率的AI代码编辑器

Cursor作为AI驱动的代码编辑工具,助力开发者效率大幅度提升。该工具简化了扩展、主题和键位配置的导入,可靠的隐私保护措施保证代码安全,深受全球开发者信赖。此外,Cursor持续推出更新,不断优化功能和用户体验。

AI工具AI开发辅助编程CursorAI代码编辑器
Manus

Manus

全面超越基准的 AI Agent助手

Manus 是一款通用人工智能代理平台,能够将您的创意和想法迅速转化为实际成果。无论是定制旅行规划、深入的数据分析,还是教育支持与商业决策,Manus 都能高效整合信息,提供精准解决方案。它以直观的交互体验和领先的技术,为用户开启了一个智慧驱动、轻松高效的新时代,让每个灵感都能得到完美落地。

飞书知识问答

飞书知识问答

飞书官方推出的AI知识库 上传word pdf即可部署AI私有知识库

基于DeepSeek R1大模型构建的知识管理系统,支持PDF、Word、PPT等常见文档格式解析,实现云端与本地数据的双向同步。系统具备实时网络检索能力,可自动关联外部信息源,通过语义理解技术处理结构化与非结构化数据。免费版本提供基础知识库搭建功能,适用于企业文档管理和个人学习资料整理场景。

下拉加载更多