我有一个Microsoft LifeCam HD-5000网络摄像头。根据AMCap,相机以720p的30fps输出MJPEG流。我希望在一个小型应用程序中捕获每个JPEG帧,而不进行任何预览或解压缩/转码,以尽可能减少CPU利用率。
我是C#开发人员,但我是DirectShow的新手。是否有一种简单的方法可以逐帧捕获MJPEG流作为C#/ .NET中摄像头的输出而不解压缩?
答案 0 :(得分:1)
首先,您可能不需要使用DirectShow访问您的相机。查看OpenCV项目,该项目在opencvdotnet处有.net绑定。
如果您想要使用DirectShow路线,那么您将需要directshownet项目提供的.NET绑定。我相信您最好的选择是创建一个过滤器图表,其中包含您的网络摄像头作为源过滤器,以及一个样本抓取器作为您的目标过滤器。样本采集器的文档位于MSDN。这将使您可以访问原始数据。您还可以请求特定的数据格式,并使用DirectShow智能连接使用正确的转换过滤器填充过滤器图形。
话虽如此,我绝对推荐OpenCV而不是DirectShow。 DirectShow是非常通用的,并且可能比你需要的更多。 OpenCV可用于快速访问您的相机。也许请查看此stackoverflow问题Webcam Usage in C#以获取更多信息和答案。
答案 1 :(得分:0)
使用DirectShowNet,我永远无法访问单个帧并在任何地方将其显示为Bitmap。在每个项目中,我只看到转换器,直接显示到屏幕或流媒体。如何将流捕获为单个位图帧?
答案 2 :(得分:0)
在Directshow.net下载包中,他们有示例代码,在Capture内部有一个项目DxSnap,它通过directshow.net连接到网络摄像头并从流中捕捉图片。您可以查看它并将其用作起点。