捕获和处理网络摄像头提要并将其作为“虚拟网络摄像头”公开-在Windows中使用Python

时间:2020-08-12 12:24:12

标签: python windows opencv webcam

最终目标是捕获常规的网络摄像头供稿,以某种方式对其进行处理(模糊面部,替换背景,...),然后以某种方式输出结果,以便可以将经处理的供稿选择为任何应用程序都需要网络摄像头(Discord,Teams ...)。

我正在Windows机器上工作,并且希望使用Python进行此操作。此刻,我迷失了。

显然,在Linux上,只有Python库提供了该功能,但它们在Windows上不起作用。听起来可能暗示着一个好的解决方案的所有内容都直接进入了C ++国家。有些程序基本上可以满足我的要求,例如webcamoid(https://webcamoid.github.io/)和我可以一起破解一个解决方案,该解决方案通过Python捕获和处理供稿,然后使用webcamoid记录输出并将其供入虚拟网络摄像头。但是我更喜欢将整个事情合而为一。

我一直在搜索,发现有关以下主题的stackoverflow这些问题:

我得到 strong 的印象,我需要C ++或必须在Linux上工作。但是,由于既缺乏Linux机器,也缺乏任何设置,也缺乏C ++编程经验,这似乎应该为“玩具项目”做大量工作。但是也许我只是在某个地方缺少明显的库或功能?

因此,问题是:是否可以在Windows上通过Python公开“网络摄像头”流?

最后一个想法:如果我在Linux Python环境中使用docker容器来实现所需的功能,该怎么办。然后,该容器可以将“虚拟网络摄像头”流式传输到主机吗?

1 个答案:

答案 0 :(得分:1)

您可以使用pyvirtualcam

首先,您需要使用pip安装它

pip install pyvirtualcam

然后转到This Link并从最新版本下载zip文件

解压缩并导航到\ bin \ [您计算机的烦恼]

在该目录中打开命令提示符,然后键入

regsvr32 /n /i:1 "obs-virtualsource.dll"

这会将假冒的相机注册到您的计算机

,如果要注销相机,请运行以下命令:

regsvr32 /u "obs-virtualsource.dll"

现在您可以使用pyvirtualcam将帧发送到相机

这是一个示例:

import pyvirtualcam
import numpy as np

with pyvirtualcam.Camera(width=1280, height=720, fps=30) as cam:
    while True:
        frame = np.zeros((cam.height, cam.width, 4), np.uint8) # RGBA
        frame[:,:,:3] = cam.frames_sent % 255 # grayscale animation
        frame[:,:,3] = 255
        cam.send(frame)
        cam.sleep_until_next_frame()
相关问题