首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过虚拟摄像机将OpenCV视频提要发送给Python?

如何通过虚拟摄像机将OpenCV视频提要发送给Python?
EN

Stack Overflow用户
提问于 2021-02-13 09:52:26
回答 1查看 575关注 0票数 1

我试图从我的物理摄像机发送一个视频到Python中的虚拟摄像机,这样我就可以在它上执行特定的效果。

到目前为止,这是我的代码:

代码语言:javascript
复制
import pyvirtualcam
import numpy as np


cam = pyvirtualcam.Camera(width=1280, height=720, fps=30)
cvCam = cv2.VideoCapture(0)

while True:
    try:
        _, frame = cvCam.read()
        
        cam.send(frame)
        cam.sleep_until_next_frame()
    except KeyboardInterrupt:
        cam.close()
        cvCam.close()
        break

print("Done")

在运行这段代码之后,我发现了一个错误,即我还需要添加alpha通道。我从this文章中复制了一些代码。这是我的新代码,在代码中添加了alpha通道:

代码语言:javascript
复制
import pyvirtualcam
import numpy as np


cam = pyvirtualcam.Camera(width=1280, height=720, fps=30)
cvCam = cv2.VideoCapture(0)

while True:
    _, frame = cvCam.read()

    b_channel, g_channel, r_channel = cv2.split(frame)
    alpha_channel = np.ones(b_channel.shape, dtype=b_channel.dtype) * 50
    frame = cv2.merge((b_channel, g_channel, r_channel, alpha_channel))

    cam.send(frame)
    cam.sleep_until_next_frame()

print("Done")

运行这段代码之后,它就会突然退出程序,而不会出现任何错误消息,即使它在while True循环中。我无法调试此问题。有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2021-03-04 09:00:01

您可能与您的源与虚拟摄像机的帧大小不匹配。目前,这导致了一场硬性崩溃(也请参阅https://github.com/letmaik/pyvirtualcam/issues/17)。

解决方案是查询源摄像头的宽度和高度,并使用它初始化虚拟相机。webcam_filter.py示例https://github.com/letmaik/pyvirtualcam/blob/master/samples/webcam_filter.py展示了如何做到这一点。

大致如下:

代码语言:javascript
复制
cvCam = cv2.VideoCapture(0)
width = int(cvCam.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cvCam.get(cv2.CAP_PROP_FRAME_HEIGHT))
with pyvirtualcam.Camera(width=width, height=height, fps=30) as cam:
   ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66183781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档