c# - 虚拟相机 - 从 Opencv 捕获图像帧并传递给 Directshow 过滤器以用于虚拟相机应用程序
问题描述
我正在开发一个虚拟相机应用程序。这个虚拟摄像头应该能够显示在 Zoom 等应用程序的可用摄像头设备列表下。现在在我的应用程序中有两个部分。一部分是 Directshow 捕获源过滤器,另一部分是 c# 应用程序。
现在我的想法是从 c# 应用程序捕获视频,用 opencv 处理这些视频帧,并通过一些进程间通信将这些视频帧传递给 directshow 过滤器。这个视频将被实时放大。
由于此链接https://github.com/roman380/tmhare.mvps.org-vcam ,我已经尝试并成功安装了流行的 vivek vcam 。注册这个 dll 后,我可以在 zoom 下的可用列表下看到这个虚拟相机。它目前只显示随机数据。
但我是 diretshow 的新手,因此有些困惑。问题来了
进程间通信是根据一些stackoverflow答案将帧从应用程序传递到directshow过滤器的方式。我正在 c# 应用程序中通过 opencv 从网络摄像头捕获视频帧。vcam 项目有一个
fillbuffer()
从中填充数据的方法。如果我将这些帧fillbuffer()
直接传递给 vcam 过滤器方法就足够了吗?还是我还需要添加samplegrabber和null 渲染。这里会流什么?如果我通过框架如何从Opencv Mat类型转换为 directsow 等效类型?我应该考虑什么类型?
感谢您阅读此问题。
解决方案
推荐阅读
- mysql - 通过可能未设置的多列在数据库表中搜索
- python - 最大化pygame窗口而不使其全屏
- r - 遇到特定单词时删除固定数量的字符R
- html - 为什么我的 (selectionChange) 不断执行?
- typescript - 为什么类型断言的验证不如类型声明强?
- javascript - 即使数据存在,在 React 中 axios 调用后数据不显示
- python - 如何在 python 3 的 for 循环中修复此语法错误?
- linux - 操作系统中的 CPU 调度
- java - 如何配置spring boot 2默认返回xml?
- java - 当只有一个条件为真时,如何使条件语句返回真?