首页 > 解决方案 > 虚拟相机 - 从 Opencv 捕获图像帧并传递给 Directshow 过滤器以用于虚拟相机应用程序

问题描述

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

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

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

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

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

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

感谢您阅读此问题。

标签: c#.netwindowsopencvdirectshow

解决方案


推荐阅读