5

我有一个 Microsoft LifeCam HD-5000 网络摄像头。根据 AMCap 的说法,相机以 30fps 和 720p 输出 MJPEG 流。我想在一个小型应用程序中捕获每个 JPEG 帧,而不进行任何预览或解压缩/转码,以将 CPU 利用率降至最低。

我是一名 C# 开发人员,但我是 DirectShow 的新手。有没有一种简单的方法来逐帧捕获 MJPEG 流作为其在 C#/.NET 中从相机的输出而不解压缩它?

4

3 回答 3

1

首先,您可能不需要使用 DirectShow 来访问您的相机。查看OpenCV项目,该项目在opencvdotnet上提供了 .net 绑定。

如果您想走 DirectShow 路线,那么您将需要 .NET 绑定,该绑定可在directshownet项目中获得。我相信您最好的选择是创建一个过滤器图,其中包含您的网络摄像头作为源过滤器,以及一个样本采集器作为您的目标过滤器。样本采集器的文档位于MSDN上。这将使您能够访问原始数据。您还可以请求特定的数据格式并使用 DirectShow 智能连接使用正确的转换过滤器填充过滤器图表。

话虽如此,我绝对推荐 OpenCV 而不是 DirectShow。DirectShow 是非常通用的,并且可能比您需要它做的更多。OpenCV 可用于快速访问您的相机。也许查看这个 stackoverflow 问题Webcam Usage in C#以获得更多信息和答案。

于 2010-11-01T17:43:36.133 回答
0

在 Directshow.net 下载包中,他们有示例代码,在 Capture 中有一个项目 DxSnap,它通过 directshow.net 连接到网络摄像头并从流中捕捉图片。您可以查看它并将其用作起点。

于 2011-07-19T19:01:22.447 回答
0

使用 DirectShowNet,我永远无法访问单个帧并将其显示为任何地方的位图。在每个项目中,我只看到转换器、直接显示到屏幕或流式传输。如何将流捕获为单个位图帧?

于 2011-03-10T08:15:24.727 回答