【问题标题】:Get image from webcam从网络摄像头获取图像
【发布时间】:2012-10-04 12:04:07
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# webcam


    【解决方案1】:

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

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

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

    其中一个 DirectShow.NET 示例可以满足您的需求。

    DxSnap – 使用 DirectShow 从静止引脚拍摄快照 捕获设备。请注意,MS 鼓励您为此使用 WIA,但如果 您想使用 DirectShow 和 C# 进行操作,方法如下。

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

    其他 API 可能不太适合。

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

    【讨论】:

    • gpl下的DirectShow.NET,但我不是。
    • 不,它不是 GPL。它是 LGPL。
    • 我看到“gpl”然后走开。结束了。
    【解决方案2】:

    这是我多年前写的

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

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

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 这个库在哪个许可证下?是否适用于 x64 系统?
      • 我相信 avicap32.dll 是一个 Windows 程序集并且来自 System32/SysWOW64。我知道它在 x64 中存在问题,但我也知道人们已经让它工作了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      相关资源
      最近更新 更多