捕获和操作网络摄像头源并将其公开为“虚拟网络摄像头” - 在 Python 中,在 Windows 上

2024-02-23

最终目标是捕获常规网络摄像头源,以某种方式对其进行操作(模糊脸部、替换背景等),然后以某种方式输出结果,以便可以选择受操作的源作为任何应用程序期望的输入网络摄像头(Discord、Teams...)。

我正在 Windows 机器上工作,并且更喜欢在 Python 中执行此操作。目前,这种组合让我迷失了。

  • 捕获和操作很容易https://pypi.org/project/opencv-python/ https://pypi.org/project/opencv-python/
  • 暴露 feed 步骤似乎过于复杂

显然,在 Linux 上有一些 Python 库只提供该功能,但它们在 Windows 上不起作用。所有听起来像是暗示一个好的解决方案的东西都直接进入了 C++ 国家。有些程序基本上可以做我想做的事,例如网络摄像头(https://webcamoid.github.io/ https://webcamoid.github.io/) and I could拼凑出一个解决方案,通过 Python 捕获和处理源,然后使用 webcamoid 记录输出并将其输入虚拟网络摄像头。但我更喜欢将所有事情集中在一起完成。

我已经搜索了一下,并在 stackoverflow 上发现了有关该主题的以下问题:

  • 使用 OpenCV 输出作为网络摄像头 https://stackoverflow.com/questions/21446292/using-opencv-output-as-webcam(使用 C++,但也提供了 Python 解决方案 - 然而,pyfakewebcam 不适用于 Windows)
  • (没有真正回答,只是链接到其他问题)
  • 如何模拟网络摄像头设备 https://stackoverflow.com/questions/35480034/how-to-simulate-a-webcam-device(更多 C++ 提示,链接到 msdn 的编写自定义媒体源)
  • Windows 上的人工网络摄像头 https://stackoverflow.com/questions/44047422/artificial-webcam-on-windows(基本上是我想要的,但又是用C++)
  • 编写虚拟网络摄像头? https://stackoverflow.com/questions/6243891/writing-a-virtual-webcam(更多关于这在 C++ 中如何工作的解释)

我正在得到strong印象中我需要 C++ 来完成这个任务或者必须在 Linux 上工作。然而,由于缺乏 Linux 机器、任何设置以及 C++ 编程经验,这对于本应是的“玩具项目”来说似乎需要大量工作。但也许我只是在某个地方缺少一个明显的库或功能?

因此,问题是:有没有办法在 Windows 上通过 Python 公开“网络摄像头”流?

最后一个想法:如果我使用带有 Linux Python 环境的 docker 容器来实现我想要的功能会怎么样。然后该容器可以将“虚拟网络摄像头”传输到主机吗?


您可以通过使用来做到这一点py虚拟摄像头 https://github.com/letmaik/pyvirtualcam

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

pip install pyvirtualcam

然后去这个链接 https://github.com/CatxFish/obs-virtual-cam/releases并下载最新版本的 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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

捕获和操作网络摄像头源并将其公开为“虚拟网络摄像头” - 在 Python 中,在 Windows 上 的相关文章

  • 不能在jinja2宏中使用current_user?

    我使用 Flask Login 它提供了current user模板中的对象 我想编写一个宏来显示评论表单或登录链接 具体取决于用户是否登录 如果我直接在模板中使用此代码 它会起作用 if current user is authentic
  • 在 MacOSX10.6 上运行 python 服务器时 MySQLdb 错误

    运行我的服务器 python manage py runserver 产生以下错误 django core exceptions ImproperlyConfigured 加载 MySQLdb 模块时出错 没有名为 MySQLdb 的模块
  • PyQt4 信号和槽

    我正在使用 PyQt4 编写我的第一个 Python 应用程序 我有一个 MainWindow 和一个 Dialog 类 它是 MainWindow 类的一部分 self loginDialog LoginDialog 我使用插槽和信号 这
  • Python 3.4.3 subprocess.Popen 在没有管道的情况下获取命令的输出?

    我试图将命令的输出分配给变量 而不让命令认为它正在通过管道传输 原因是 如果正在通过管道传输 则相关命令会给出未格式化的文本作为输出 但如果从终端运行 则会给出颜色格式化的文本 我需要获取这种颜色格式的文本 到目前为止我已经尝试了一些事情
  • 使用opencv+picamera流IO用树莓派捕获视频

    我使用 Raspberry 来简单地显示一个视频 目前仅此 为此 我必须使用 opencv cv2 我尝试了很多解决方案 但现在我想使用 Picamera 库捕获视频 我将向您展示我的代码 import io import time imp
  • Python控制台默认十六进制显示

    我在 Python 控制台中做了很多工作 其中大部分都涉及地址 我更喜欢以十六进制形式查看地址 So if a 0xBADF00D 当我简单地输入Python gt a进入控制台查看其值 我更喜欢 python 回复0xBADF00D代替1
  • 如何在 sqlalchemy 中创建基于文字的查询?

    我创建了一个函数来创建表达式 def test operator1 operation operator2 return literal column operator1 op operation operator2 现在当我用 test
  • 自定义信号的声明

    在 Qt 中 我们可以通过将自定义信号设为静态变量来创建它们 然后我们使用self signame反而classname signame 这样就在类中创建了一个实例变量 我想了解这种模式之外的理论 这是我尝试过的一些伪代码 这些伪代码已记录
  • Pythoncom - 将相同的 COM 对象传递给多个线程

    你好 对于 COM 对象 我是一个完全的初学者 非常感谢任何帮助 我正在开发一个Python程序 该程序应该以客户端 服务器的方式读取传入的MS Word文档 即客户端发送一个请求 一个或多个MS Word文档 服务器使用pythoncom
  • 使用 shell=True 将 PATH 设置为 bitbake 的“source”在 Python 中没有效果

    下面是shell脚本中的代码 source proj common tools repo etc profile d repo sh repo project init branch repo project sync source pok
  • Pandas:向量化局部范围操作([i:i+2] 行的最大值和总和)

    我希望在数据帧中的每一行的局部范围内进行计算 同时避免速度缓慢for环形 例如 对于下面数据中的每一行 我想找到未来 3 天内 包括当天 的最高气温以及未来 3 天内的总降雨量 Day Temperature Rain 0 30 4 1 3
  • 将 Python 控制台集成到 GUI C++ 应用程序中

    I m going to add a python console widget into a C GUI below some other controls 许多类将暴露给 python 代码 包括一些对 GUI 的访问 也许我会考虑 P
  • Mac 上的 Errno 13 权限被拒绝

    我只是测试如何从一个 py 文件调用外部 py 文件 我有 2 个 py 文件 都在同一目录中 这是主要代码 runext py 假设调用 ext py import subprocess subprocess call Users tra
  • 安装python启动文件

    我如何安装pythonstartup文件 以便它在命令上运行 例如python myfile py 我尝试将其安装到我的 home myuserUbuntu的目录 但它说我没有足够的权限 此外 不同的地方交替说它应该全部大写或全部小写 前面
  • Python写入dbf数据时出错

    我得到这个错误 DbfError unable to modify fields individually except in with or Process 如何修复它 这是我的code with dbf Table aa dbf as
  • 找到图像特征宽度的正确方法和Python包

    输入是一个在黑色背景上带有彩色 抱歉 垂直线的光谱 给定该带的近似 x 坐标 用 X 标记 我想找到该带的宽度 我对图像处理不熟悉 请引导我前往正确的方法图像处理和Python图像处理package也能起到同样的作用 我认为 PIL Ope
  • 使用多行选项和编码选项读取 CSV

    在 azure Databricks 中 当我使用以下命令读取 CSV 文件时multiline true and encoding SJIS 似乎编码选项被忽略了 如果我使用multiline选项 Spark 使用默认值encoding那
  • Tensorboard——High-level节点的计算时间与其子节点计算时间的总和不同

    继tutorial https www tensorflow org programmers guide graph viz在 TensorFlow 上 我试图使用张量板来理解运行时统计数据 我发现代表名称范围的高级节点的计算时间不等于其子
  • 在 Mac (Catalina) 上安装 PyGame 时出错 [重复]

    这个问题在这里已经有答案了 我一直在尝试将 PyGame 安装到 Catalina 上的 Mac 上 但不知道如何安装 我收到的错误消息是 SystemExit error command gcc failed with exit stat
  • “ModuleNotFoundError:我的 Docker 容器中没有名为 的模块”

    我正在尝试在 Docker 容器中运行 python 脚本 但我不知道为什么 python 找不到任何 python 模块 我认为它与 PYTHONPATH 环境变量有关 所以我尝试将其添加到 Dockerfile 中 如下所示 ENV P

随机推荐