虚拟相机 - 从 Opencv 捕获图像帧并传递给虚拟相机应用程序的 Directshow 过滤器

问题描述

我正在开发一个虚拟相机应用程序。这个虚拟相机应该能够显示在 Zoom 等应用程序的可用相机设备列表下。现在在我的应用程序中有两个部分。一部分是 Directshow 捕获源过滤器,另一部分是 C# 应用程序。

现在我的想法是从 c# 应用程序中捕获视频,使用 opencv 处理这些视频帧,并将这些视频帧通过一些进程间通信传递给 directshow 过滤器。此视频将实时放大。

感谢此链接 https://github.com/roman380/tmhare.mvps.org-vcam,我已尝试并成功安装了流行的 vivek vcam。注册这个dll后,我可以在zoom下的avialble列表下看到这个虚拟摄像机。它目前只显示随机数据。

但我是 diretshow 的新手,因此有些困惑。问题来了

  1. 进程间通信是根据某些 stackoverflow 答案将帧从应用程序传递到 directshow 过滤器的方式。我正在 c# 应用程序中通过 opencv 从网络摄像头捕获视频帧。 vcam 项目具有用于填充数据的 fillbuffer() 方法。如果我将这些帧直接传递给 vcam 过滤器 fillbuffer() 方法就足够了吗?还是我还需要添加 samplegrabbernull render 。这里会流什么?

  2. 如果我传递了框架,如何从 Opencv Mat 类型转换为 directsow 等效类型?我应该考虑什么类型?

感谢您阅读这个问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)