2

我正在尝试找到从托管 C# 中的网络摄像头获取图像(仅图像,而不是视频流)的方法。通常人们建议图书馆,但它们是旧的或商业的或在 gpl 下。

如何在没有第三方库的情况下从网络摄像头获取图像?

更新:感谢媒体基金会,我将使用它。

4

3 回答 3

3

网络摄像头应该提供视频馈送,而不是静止图像。因此,您可能感兴趣的原生 API 是用于视频捕获的 API,即 DirectShow 和 Media Foundation。

您最可能想要的是 DirectShow,但它不太适合与托管代码接口,因此您需要一个DirectShow.NET,它是开源包装器。您通常会在此处开始视频流,一旦您拥有良好的图像,您就会停止活动。

或者相反,您可能会继续寻找可以为您执行上述操作的现成库。

DirectShow.NET 示例之一可以满足您的需求。

DxSnap – 使用 DirectShow 从捕获设备的 Still 引脚拍摄快照。请注意,MS 鼓励您为此使用 WIA,但如果您想使用 DirectShow 和 C#,请参考以下方法。

它提到了 WIA,但是 WIA API 不适用于所有(或最近的操作系统中的任何?)网络摄像头,WIA 更多地针对扫描仪等设备。

其他 API 可能不太适合。

  • VFW(“avicap32.dll”)将您限制为设备子集,简单但不能很好地与托管代码接口
  • Media Foundation 在早期操作系统版本中不可用
于 2012-10-04T12:15:45.857 回答
1

avicap32.dll 是不可能的吗?

否则我认为这是一种简单直接的方法:

http://www.creativecodedesign.com/node/66

http://www.c-sharpcorner.com/uploadfile/yougerthen/integrate-the-web-webcam-functionality-using-C-Sharp-net-and-com-part-viii/

于 2012-10-04T12:07:37.380 回答
1

这是我多年前写的

http://www.vbforums.com/showthread.php?344471-Vb.Net-WebCam-Class-(ICam )) 在 VB.net

您可以轻松地将其移植到 c# 吗?

于 2012-10-04T12:06:45.227 回答