【问题标题】:Combine DirectShow with OpenCV将 DirectShow 与 OpenCV 相结合
【发布时间】:2014-10-03 15:35:08
【问题描述】:

我在 C# Web 窗体中使用 DirectShow 获取视频源。现在我想使用 OpenCV 处理帧。 (EmguCV 包装器)

1) 我如何从 DirectShow 提要中收集帧。

2) 有没有办法结合 DS 和 OpenCV。

谢谢。

【问题讨论】:

  • 你知道如何编写自己的直接显示过滤器吗?
  • 一点点.. 我为我的任务找到了一个 DirectX 代码(即提取帧).. 这两种方法有什么区别.. DirectShow vs DirectX
  • Afaik DirectX 使用 DirectShow 进行 2D 渲染,所以应该没有区别,但我对 DirectShow 也很陌生,所以我可能错了。
  • 您应该能够从 DirectShow 提要中提取帧。这可能会对您有所帮助:codeproject.com/Articles/1353/…。您应该能够使用 OpenCV 从捕获的帧中处理像素数据(取决于您的帧使用的图像格式,您可能需要稍微调整一下)。这是一个 OpenGL+OpenCV 应用程序的框架,它可能会给你一些指示下一步该做什么:cs.ucsb.edu/~holl/CS290I/opengl_cv.cpp我自己使用过它,它正在工作。
  • @Micka,是的,据我所知 DirectShow 仅用于 2D 渲染。但是 3D 可以很容易地转换为 2D。毕竟,这是在我们的 2D 显示器上显示 3D 对象时实际发生的情况。 :)

标签: c# opencv directshow emgucv


【解决方案1】:

根据您的描述,使用 SampleGrabber 过滤器就足够了。 SampleGrabber 将允许您抓取各个帧,之后您可以根据需要对其进行存储和处理。

用法示例见on MSDN

【讨论】:

    猜你喜欢
    • 2013-01-20
    • 1970-01-01
    • 2019-12-02
    • 2012-05-19
    • 2020-05-04
    • 2014-10-23
    • 2011-08-11
    • 2011-11-13
    • 2013-04-13
    相关资源
    最近更新 更多