9 个不稳定版本 (3 个破坏性版本)

0.4.0 2022年9月25日
0.3.0 2022年9月15日
0.2.6 2020年10月7日
0.2.5 2020年9月1日
0.1.0 2020年8月24日

#776 in 机器学习

每月33次 下载
用于 3 个crate(2 个直接使用)

MIT 许可证

4.5MB
82K SLoC

C 37K SLoC // 0.2% comments Assembly 22K SLoC // 0.2% comments GNU Style Assembly 9K SLoC // 0.1% comments Bitbake 5K SLoC C++ 4.5K SLoC // 0.1% comments Java 3K SLoC // 0.4% comments JavaScript 1K SLoC // 0.0% comments Objective-C++ 1K SLoC // 0.2% comments Rust 51 SLoC // 0.1% comments Prolog 26 SLoC Batch 23 SLoC Shell 6 SLoC // 0.2% comments

OpenPNP Logo

openpnp-capture

OpenPnP Capture 是一个跨平台视频捕获库,专注于机器视觉。其目标是

  • 在 Windows、Linux 和 Mac 上提供原生相机访问。分别使用 DirectShow、V4L2 和 AVFoundation 实现。
  • 命名设备枚举。
  • 强大、可重复的唯一 ID。
  • 格式控制,支持至少 YUV 和 MJPEG。MJPEG 允许在单个集线器上使用多个 USB 相机。
  • 自动和手动曝光控制。
  • 自动和手动对焦控制。
  • 简单的常见 C 包装器,用于列出的 API。

状态

Windows

功能 实现
设备枚举
捕获
MJPEG 格式
YUV 格式
曝光控制
对焦控制 是 / 未测试
变焦控制
增益控制
白平衡控制
帧率控制

Linux

功能 实现
设备枚举
捕获
MJPEG 格式
YUV 格式 是,YUYV/YUV2
曝光控制
对焦控制 是 / 未测试
变焦控制
增益控制 是 / 未测试
白平衡控制
帧率控制

OSX

功能 实现
设备枚举
捕获
MJPEG 格式 是(dmb1)
YUV 格式
曝光控制 是 / 实验
对焦控制 是 / 实验
变焦控制 是 / 实验
增益控制 是 / 实验
白平衡控制 是 / 实验
帧率控制

待办事项

  • 支持重新枚举。

构建 OpenPnP Capture

依赖关系

  • CMAKE 3.1 或更高版本
  • MAKE(osx、linux)
  • Visual Studio 2013 + NMake 或 Ninja Build(windows)
  • NASM 构建libjpeg-turbo(linux)
  • libgtk-3-dev(linux,测试程序)

构建说明(Windows)

运行批处理文件 'bootstrap.bat' 并选择所需的构建系统(VisualStudio/nmake 或 Ninja)。确保编译器(Visual Studio)在搜索路径中。

转到构建目录并运行 nmake 或 ninja 以构建库和测试应用程序。

构建说明(OSX)

运行 'bootstrap_osx.sh'。运行 make。

构建说明(Linux)

运行 'bootstrap_linux.sh'。运行 make。

支持其他平台

  • 实现所有PlatformXXX类,例如在win或linux目录中。
  • PlatformContext负责处理设备以及内部帧缓冲格式枚举。
  • PlatformStream负责捕捉和解码摄像头流到8位每通道的RGB帧缓冲。
  • 静态链接外部依赖。

发布

所有支持的平台都会自动构建发布版本。请查看https://github.com/openpnp/openpnp-capture/releases/latest下载最新版本。

平台说明

MacOS

截至MacOS 10.15,打开摄像头需要摄像头权限。库将自动执行权限请求,但应用程序包中需要存在Info.plist文件。一个示例Info.plist文件为

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>NSCameraUsageDescription</key>
	<string>openpnp-capture needs permission to access the camera to capture images.</string>
</dict>
</plist>

您可以通过运行 tccutil reset Camera来为测试目的在MacOS中重置摄像头权限。

无运行时依赖