我正在尝试找到从托管 C# 中的网络摄像头获取图像(仅图像,而不是视频流)的方法。通常人们建议图书馆,但它们是旧的或商业的或在 gpl 下。
如何在没有第三方库的情况下从网络摄像头获取图像?
更新:感谢媒体基金会,我将使用它。
网络摄像头应该提供视频馈送,而不是静止图像。因此,您可能感兴趣的原生 API 是用于视频捕获的 API,即 DirectShow 和 Media Foundation。
您最可能想要的是 DirectShow,但它不太适合与托管代码接口,因此您需要一个DirectShow.NET,它是开源包装器。您通常会在此处开始视频流,一旦您拥有良好的图像,您就会停止活动。
或者相反,您可能会继续寻找可以为您执行上述操作的现成库。
DirectShow.NET 示例之一可以满足您的需求。
DxSnap – 使用 DirectShow 从捕获设备的 Still 引脚拍摄快照。请注意,MS 鼓励您为此使用 WIA,但如果您想使用 DirectShow 和 C#,请参考以下方法。
它提到了 WIA,但是 WIA API 不适用于所有(或最近的操作系统中的任何?)网络摄像头,WIA 更多地针对扫描仪等设备。
其他 API 可能不太适合。
这是我多年前写的
http://www.vbforums.com/showthread.php?344471-Vb.Net-WebCam-Class-(ICam )) 在 VB.net
您可以轻松地将其移植到 c# 吗?