
本文仅介绍此源代码的一般组成以及如何对其进行修改,因为我对此一无所知. 我只是使用QQ呼叫虚拟相机来读取我自己的视频或图片并将其显示给他人. 就是这样.
1,示例代码: QQ可以使用Directshow来实现虚拟摄像机(win10 + vs2013,c ++代码)如果没有积分并且需要代码,可以通过huqiaoping23@qq.com给我发送电子邮件<
2,源代码描述
此源代码包含DirectShow库文件. 相关的配置文件也保存在项目中,无需安装DirectShow或DirectX SDK即可直接运行.
此源代码是用于注册和注销虚拟摄像机的源代码. 运行它可以使QQ视频以随机数的形式显示每个像素的图片(其他功能可以由您自己设计和编写以进行修改). 如下图所示
有关测试方法,请参考win10 + VS2013下载DirectShow相关示例代码和DirectShow库文件调用3,运行测试并进行调整
3. 代码解释

结构说明:
文件Filter.cpp和Filter.h是虚拟摄像机的特定配置信息,例如向虚拟摄像机提供了哪些数据,如果要更改代码和数据以读取不同的内容,请查看这两个文件;
文件Dll.cpp和Dll.def是用于注册和注销虚拟摄像机的功能. 您需要在此处查看DirectShow的工作方式.
文件DibHelper.h和DibHelper.cpp是获取计算机屏幕像素的函数. 如果您希望QQ视频的另一端查看计算机的实时图片,则可以使用此功能,因为原始代码功能是让QQ视频对方看到其计算机屏幕并使用它们,但是当前代码不会读取计算机屏幕,而是直接分配值,向其中写入随机数,因此请勿浏览这两个文件.
阅读代码
从Dll.def读取

此项目生成库文件VCam.ax,该文件类似于我们通常的.dll文件,而不是诸如.exe之类的可执行文件,因此无法像以前那样进行调试. 我不知道该库文件有哪些调试方法. ,因此,如果您输入有误,则必须通过目视检查.
尝试搜索与项目中的虚拟摄像机相关的DllMain,DllRegisterServer,DllUnregisterServer函数. 有关具体功能功能,请参阅官方网站上的介绍. 链接在这里给出,我不会翻译.
DLL函数
Dll.def和Dll.cpp彼此对应,这就是DirectShow的使用方式. (其中g_wszFilterName是虚拟相机的名称,您可以尝试将其更改为您自己的名称)
特定的虚拟摄像机配置信息(即Filter.cpp和Filter.h)如何进入配置,即与Dll.cpp和Dll.def的关系如何,请自己搜索CLSID_VirtualCamera <
Filter.cpp和Filter.h要注意的重要功能是FillBuffer. 该功能是填写数据的功能. 在此示例中,直接填充了随机数. 因此,QQ视频中的呼叫看起来像一堆不断变化的灰度. 东东.
如果要查看如何配置和编写过滤器,请从CVCam类开始.
4,尝试使用虚拟相机播放自己的照片(尝试自己修改示例代码)

说明:
上图中的带框部分是写入数据的部分,cbData是大小,pData是特定数据directshow实例,这里是随机数. 那就是看自己的照片directshow实例,填写数据,仅此而已.
我以前只是使用opencv来阅读图片和视频,而且我不知道如何以其他方式阅读它,所以我直接使用了opencv.
我的环境是opencv3.0,我不会谈论环境配置,其他opencv版本是相同的.
为了将来将其更改为视频,我编写了一个函数,将Mat图像读取到缓冲区中,如下所示
注释掉上图中的红色框. 用opencv阅读图片后,直接调用此函数. 当然,此功能用于彩片,如果您是灰度的,则有所不同.

您会注意到数据是向后复制的. 这是因为在存储数据时位图和Mat有所不同. 另外,我似乎并不关心这个问题. 看起来还是可以的.
代码修改和测试结果:
可以看出,当我用计算机登录QQ进行视频录制时,左右看上去正常,但是对方收到的图片却相反,因此我对读取Mat的功能有问题数据. 也就是说,左右颠倒了,读者可以自己修改,也可以稍后再上传.
如果您可以传递照片,我们就传递以下视频. 本文将不再赘述
如果您喜欢,请给我奖励. 一根头发和两根头发也是意思,么.
支持F宝账户: 2363891614@qq.com
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-161415-1.html
定位准确
77个粉丝