python - 发送到 pyvirtualcam 的网络摄像头输入为蓝色(使用 pyvirtualcam 和 opencv)
问题描述
我正在尝试使用 OpenCv 从我的网络摄像头获取输入,并使用 pyvirtualcam 将其发送到虚拟摄像头。出于某种原因,当我的网络摄像头显示时,它会给它一个蓝色滤镜。当我显示我的网络摄像头而不将其发送到虚拟摄像头时,没有过滤器并且一切正常。
import pyvirtualcam
import cv2
cap = cv2.VideoCapture(0)
with pyvirtualcam.Camera(width=1280, height=720, fps=20) as cam:
while True:
ret_val, frame = cap.read()
frame = cv2.resize(frame, (1280, 720), interpolation=cv2.BORDER_DEFAULT)
# cv2.imshow('my webcam', frame)
cam.send(frame)
cam.sleep_until_next_frame()
if cv2.waitKey(1) == 27:
break # esc to quit
cv2.destroyAllWindows()
解决方案
OpenCV 使用 BGR 作为像素格式。pyvirtualcam 默认需要 RGB,但它也支持 BGR:
fmt = pyvirtualcam.PixelFormat.BGR
with pyvirtualcam.Camera(width=1280, height=720, fps=20, fmt=fmt) as cam:
推荐阅读
- linux - Linux bash 上有没有办法突出显示在当前路径的最后 N 分钟内修改的所有文件
- java - Android应用程序在最小化然后打开后崩溃
- ios - 如何在swift 5中使用闭包在参数中传递函数
- javascript - js字符串到日期时间加2小时
- database-design - 实施销售退货表
- python - 我该如何解决:索引 0 超出轴 0 的范围,大小为 0
- apache-camel - 向 Apache Camel 中的现有 CSV 数据添加新列和行
- c - 程序打印 0 作为通过 scanf("%f") 获得的两个正整数相乘的结果
- css - 字体粗细在@font-face 内不起作用
- javascript - 我可以将 NPX 与纱线一起使用吗?