cv2执行时出错错误的文件描述符

2024-04-27 16:00:22 发布

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

我正在循环中运行一些Python脚本(但速度不是很快)

例如:

import time
import cv2
stream = cv2.VideoCapture(0)
while True:
    ret,frame = stream.read()
    cv2.imshow("Frame",frame)
    cv2.waitKey(1)
    time.sleep(10)

执行几分钟后,我发现以下错误:

E1205 11:19:12.803174714   32302 backup_poller.cc:132]       Run client channel backup poller: {"created":"@1607177952.802346313","description":"pollset_work","file":"src/core/lib/iomgr/ev_epollex_linux.cc","file_line":324,"referenced_errors":[{"created":"@1607177952.802226759","description":"Bad file descriptor","errno":9,"file":"src/core/lib/iomgr/ev_epollex_linux.cc","file_line":954,"os_error":"Bad file descriptor","syscall":"epoll_wait"}]}

有人知道这是什么吗?我查看了谷歌,但没有找到任何好的解决方案


Tags: coreimportsrcstreamtimelibdescriptioncv2
1条回答
网友
1楼 · 发布于 2024-04-27 16:00:22

创建视频捕获后,始终测试stream.isOpened()。如果这是假的,你就不能对视频做任何事情

ret, frame = stream.read()之后,始终测试ret是否为真。如果为False,则视频已结束,您需要结束循环

我还建议不要睡10秒钟。在此期间,GUI事件循环将不会运行(因为您没有运行waitKey),这会使imshow窗口无响应,并且您的操作系统可能会决定终止该进程

改为使用waitKey(10000)。检查waitKey()是否等待了整个时间间隔。由于关键事件,它可能会提前返回。您可以接受这一点,也可以在剩余时间内重复waitKey

不管你读不读,相机都会以固定的间隔产生画面。如果你不读,他们就会排队。司机不会喜欢这样,可能会决定向你抛出错误

相关问题 更多 >