最终目标是捕获常规的网络摄像头供稿,以某种方式对其进行处理(模糊面部,替换背景,...),然后以某种方式输出结果,以便可以将经处理的供稿选择为任何应用程序都需要网络摄像头(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容器来实现所需的功能,该怎么办。然后,该容器可以将“虚拟网络摄像头”流式传输到主机吗?
答案 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()