尝试使用PyFakeWebcam时发生IOError

2024-06-25 23:06:44 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我最近尝试使用PyFakeWebcam,但我遇到了一点问题。每当我尝试使用它做任何事情时,我都会遇到以下错误:

Traceback (most recent call last):
    File "fakecam.py", line 13, in <module>
        fake1 = pyfakewebcam.FakeWebcam('/dev/video1', IMG_W, IMG_H)
    File "/home/user/.local/lib/python3.6/site-packages/pyfakewebcam/pyfakewebcam.py", line 54, in __init__
        fcntl.ioctl(self._video_device, _v4l2.VIDIOC_S_FMT, self._settings)
OSError: [Errno 22] Invalid argument

作为参考,我使用以下代码:

import cv2
import time
import pyfakewebcam
import numpy as np

IMG_W = 1280
IMG_H = 720

cam = cv2.VideoCapture(0)
cam.set(cv2.CAP_PROP_FRAME_WIDTH, IMG_W)
cam.set(cv2.CAP_PROP_FRAME_HEIGHT, IMG_H)

fake1 = pyfakewebcam.FakeWebcam('/dev/video1', IMG_W, IMG_H)
fake2 = pyfakewebcam.FakeWebcam('/dev/video2', IMG_W, IMG_H)

while True:
    ret, frame = cam.read()

    flipped = cv2.flip(frame, 1)

    # Mirror effect 
    frame[0 : IMG_H, IMG_W//2 : IMG_W] = flipped[0 : IMG_H, IMG_W//2 : IMG_W]

    fake1.schedule_frame(frame)
    fake2.schedule_frame(flipped)

    time.sleep(1/15.0)

导致此错误的原因是什么?是否可以解决


Tags: inpydevimportimg错误linecv2
1条回答
网友
1楼 · 发布于 2024-06-25 23:06:44

尝试选择不同的设备-/dev/video1可能不可用,并且创建了modprobe/dev/video2/dev/video3。检查可用视频设备的ls /dev | grep -P '^video\d+$'输出,并从最后一个设备中选择一个

运行脚本后,通过ffplay /dev/video3检查结果

如果这不能解决您的问题,则必须安装v4l2loopback utils特定版本

有关更多详细信息,请查看此githubissue

相关问题 更多 >