C# + DirectShow.NET = 简单的网络摄像头访问?

6
我发现了一个关于在C#中访问网络摄像头的示例。该示例使用DirectShow.NET库。我试图理解代码,但目前我唯一能理解的是用户控件以某种方式调用directshow直接绘制到用户控件的表面。
我想访问每一帧并将其放入位图对象中。如何知道新帧何时到达?如何将此新帧捕获到位图对象中?
如果您熟悉DirectShow.NET,这可能很容易回答。

1
现在,DirectShow.NET是一个无人问津的项目。很抱歉… - NoWar
3个回答

7
你需要使用ISampleGrabber接口,网络上有许多c++示例可以教你如何使用它,它将为你提供以RGB原始格式的数据,你可以将其输入到位图类中。
还有一个名为Touchless的开源库,其中有一个项目可以使用网络摄像头,并在每次新帧到达时给你回调。

你能告诉我在哪里获取编译Touchless的WebCamLib所需的qedit.h文件吗?我已经下载了Windows SDK和DirectX SDK,但无法在任何地方找到它。 - George
2
已知问题,您需要一个旧的2007年8月DirectX SDK。http://www.microsoft.com/downloads/details.aspx?familyid=529F03BE-1339-48C4-BD5A-8506E5ACF571&displaylang=en - Shay Erlichmen
编译WebCamLib的经验:您需要下载一个大约222M的文件“dx9sdk.exe”,它是一个非常古老的DirectX 9 SDK(2002年),在Google上搜索文件名将有所帮助。安装后,在include目录中,您会找到qedit.h。您必须在WebCamLib的项目属性中指定此目录。确保以Release方式编译,否则Vista会出错。还可能会出现错误,您需要将POINTER_64常量更改为__ptr64。 - George
@Shay Erlichmen:ISampleGrabber API“可能会在未来的Windows版本中被移除”。请查看您提供的链接。 - itsho
@itsho 在 Metro 应用程序中,它已不再受支持。 - Shay Erlichmen
显示剩余2条评论

4

@fretje 谢谢您的提醒,现在已经修复了。 - nikib3ro

0

CodePlex已关闭,是否有其他方式可以访问Touchless? - Nitin Sawant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接