python-3.x - 视频运行几帧然后给出错误
问题描述
我正在研究 raspberry pi3 model b+ 我在我的 raspberry pi 上安装了 opencv 3.4.4,它安装得很好。我只是运行一个基本代码来查看我的相机输出。(我已经插入了两个摄像头)
这是代码。
import cv2
import time
def show_webcam(mirror=False):
frame_rate = 30
prev = 0
cam = cv2.VideoCapture(0)
cam1 = cv2.VideoCapture(1)
ff= 0.5
fxx = ff
fyy = ff
while True:
ret_val, img = cam.read()
img2 = cam1.read()[1]
time_elapsed = time.time() - prev
# print('data type of frame', type(img))
if time_elapsed > 1/frame_rate:
prev = time.time()
cv2.rectangle(img,(100,100),(500,500),(255,255,0),2)
small_frame = cv2.resize(img, (0, 0), fx=fxx, fy=fyy)
cv2.resize(img2,(0, 0), fx = fxx, fy = fyy)
#print("helo")
#if mirror:
# img = cv2.flip(img, 1)
cv2.imshow('my webcam', img)
cv2.imshow('my 2nd webcam', img2)
#if cv2.waitKey(1) == 27:
# break # esc to quit
if cv2.waitKey(1) == 27:
break
cv2.destroyAllWindows()
print (cam)
def main():
show_webcam(mirror=True)
if __name__ == '__main__':
main()
视频出现了几帧,但几秒钟后我得到了这个错误
select timeout
VIDIOC_DQBUF: Resource temporarily unavailable
Traceback (most recent call last):
File "camera.py", line 39, in <module>
main()
File "camera.py", line 36, in main
show_webcam(mirror=True)
File "camera.py", line 21, in show_webcam
small_frame = cv2.resize(img, (0, 0), fx=fxx, fy=fyy)
cv2.error: OpenCV(3.4.4) /home/pi/packaging/opencv-python/opencv/modules/imgproc/src/resize.cpp:3784: error: (-215:Assertion failed) !ssize.empty() in function 'resize'
当我在笔记本电脑上实现它时,同样的代码可以正常工作。我能做些什么来纠正这个错误并确保视频不中断?
尝试过 cv2.waitKey(30) 不起作用
解决方案
cam.read()
在继续处理之前,您应该检查两者的 ret_val 是否同时为真。因此,当一个帧没有被正确抓取时,它会被丢弃并重试该过程,而不是抛出错误并退出。
这在技术上并不能解决错误,但它确实解决了您的问题,前提是生成的帧速率足以满足您的应用程序。
推荐阅读
- python - 用于元组的 Python 递归幂集函数
- javascript - 已解决:使用 ID 对特定用户进行 DMing
- python - Django如何区分密码错误或“user.is_active”是否为假?
- python-3.x - PDFminer 如何在包含 1-3 页长 PDF 的文件夹中循环,将它们转换为 Txt 并将它们保存在单独的文件夹中?
- migradoc - 如何在相同高度的textFrame中获取两个表
- python - 如何使用字节数组将位数组写入文件
- django - 基于模型值的 django 管理员权限
- html - 使用响应式背景图像创建登录
- javascript - 如何使用散景服务器获取鼠标位置?
- python - 从 MacOS 安装 python (scipy) 包