7个稳定版本
使用旧的Rust 2015
4.0.0 | 2019年5月10日 |
---|---|
3.1.1 |
|
3.0.5 | 2016年4月21日 |
在 视频 中排名第192
每月下载量174次
用于 4 个库(通过 camera_capture)
730KB
14K SLoC
ESCAPI
极其简单的捕获API
版权 (c)2015 Jari Komppa http://iki.fi/sol
二进制文件
二进制文件可在 http://iki.fi/sol/zip/escapi3.zip 获取
用法
将 escapi.cpp 添加到您的项目中。此文件包含加载 escapi.dll 的代码。请参阅示例(推荐使用 'simplest')以了解API使用方法。
Rust 绑定使用
只需将crate添加到您的项目中并开始使用即可。 注意:请确保Windows SDK和Media Foundation头文件对您的Rust工具链是可访问的,否则库构建将失败(即它应该与MSVC工具链配合良好,如果使用mingw工具链可能需要一些更改)。
许可证
ESCAPI在unlicense下发布。简而言之,只要您不让我承担责任,就可以用于任何目的。如果您玩这个,给我发邮件会很好。
一些示例使用了具有不同许可证的外部库。
ESCAPI是什么?
一个相当易于使用的摄像头(或其他视频输入设备)捕获API。
版本2.0增加了对多个捕获设备的支持,以及请求捕获设备名称的功能,以及新的示例。
版本2.1更新了示例,包括纯基本和blizmax示例,以及基于OpenGL的“有趣的镜子”示例,并将捕获数据中的最高8位“alpha”位填充为0xff。
版本3.0是使用Windows媒体基金会而不是DirectShow的完全重写。该版本增加了与摄像头属性的交互接口,新的示例,自动摄像头分辨率选择,64位构建和源代码发布。从版本3.0开始需要Windows Vista或更高版本(7,8,8.1,10..)。
动机
我在“textmedia”中最后添加的功能之一是摄像头支持。我对摄像头产生了兴趣,想着我可能可以用摄像头制作某种“眼动玩具”游戏。
网络摄像头的缺点之一是编程API非常复杂——当时使用它们的唯一方法是通过DirectShow。从摄像头获取数据是一个相当复杂的过程,同时提供的控制功能有限。
因此,为了消除直接媒体SDK的要求,我将所需的代码拆分成了单独的DLL,现在向您介绍ESCAPI。
- setupESCAPI - 初始化整个库。(在escapi.cpp中)
- countCaptureDevices - 请求可用捕获设备的数量。
- getCaptureDeviceName - 请求捕获设备的可打印名称。
- initCapture - 尝试打开视频捕获设备。失败时返回0,成功时返回1。
- doCapture - 请求捕获一个视频帧。
- isCaptureDone - 当请求的帧已被捕获时返回1。
- deinitCapture - 关闭视频捕获设备。
因此,基本上,您需要调用setup来初始化库,调用init来启动捕获设备,并调用doCapture来开始捕获过程。当捕获完成后,您可以请求另一个帧。等等。
不幸的是,“眼动玩具”方面,PC上的网络摄像头相当卡顿,而且这种卡顿从一款摄像头到另一款摄像头各不相同。我的罗技信使摄像头大约有1秒的延迟,而我的创意即时摄像头有更可容忍的延迟。这两款摄像头也执行一些自动对比度技巧和其他类似操作,这些操作可能不适合游戏。
因此,我从未完成过那种“眼动玩具”类似的游戏。也许有一天吧 =)
依赖关系
一些示例使用了外部库
- SDL2,在zlib/libpng许可证下,http://libsdl.org
- 一些stb库,公有领域,https://github.com/nothings/stb
- ocornut的ImGui,MIT许可证,https://github.com/ocornut/imgui