捕获和操作网络摄像头源并将其公开为“虚拟网络摄像头” - 在 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 上 的相关文章

  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • SQL Alchemy 中的 NULL 安全不等式比较?

    目前 我知道如何表达 NULL 安全的唯一方法 SQL Alchemy 中的比较 其中与 NULL 条目的比较计算结果为 True 而不是 NULL 是 or field None field value 有没有办法在 SQL Alchem
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • 在循环中每次迭代开始时将变量重新分配给原始值(在循环之前定义)

    在Python中 你使用 在每次迭代开始时将变量重新分配给原始值 在循环之前定义 时 也就是说 original 1D o o o for i in range 0 3 new original 1D revert back to orig
  • 使用 Pycharm 在 Windows 下启动应用程序时出现 UnicodeDecodeError

    问题是当我尝试启动应用程序 app py 时 我收到以下错误 UnicodeDecodeError utf 8 编解码器无法解码位置 5 中的字节 0xb3 起始字节无效 整个文件app py coding utf 8 from flask
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo

随机推荐