#捕获 #设备 #摄像头 #API #接口 #极其 #版本

escapi

极其简单的捕获API (ESCAPI) - Windows下的简单摄像头API

7个稳定版本

使用旧的Rust 2015

4.0.0 2019年5月10日
3.1.1 2019年5月9日
3.0.5 2016年4月21日

视频 中排名第192

Download history 56/week @ 2024-03-12 52/week @ 2024-03-19 40/week @ 2024-03-26 76/week @ 2024-04-02 34/week @ 2024-04-09 56/week @ 2024-04-16 62/week @ 2024-04-23 44/week @ 2024-04-30 41/week @ 2024-05-07 54/week @ 2024-05-14 59/week @ 2024-05-21 47/week @ 2024-05-28 40/week @ 2024-06-04 36/week @ 2024-06-11 48/week @ 2024-06-18 42/week @ 2024-06-25

每月下载量174
用于 4 个库(通过 camera_capture

自定义许可证

730KB
14K SLoC

C++ 13K SLoC // 0.1% comments Visual Studio Project 1K SLoC Rust 135 SLoC Visual Studio Solution 101 SLoC Python 75 SLoC // 0.2% comments INI 68 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秒的延迟,而我的创意即时摄像头有更可容忍的延迟。这两款摄像头也执行一些自动对比度技巧和其他类似操作,这些操作可能不适合游戏。

因此,我从未完成过那种“眼动玩具”类似的游戏。也许有一天吧 =)

依赖关系

一些示例使用了外部库

依赖关系