我在带有pi相机的Raspberry Pi上运行以下代码,我有它的broadcom驱动程序,但是我收到了一个错误。也许与视频源的尺寸有关,但我不知道如何在Linux上设置它。
代码:
import cv2
import numpy as np
cap = cv2.VideoCapture()
while True:
ret, img = cap.read()
cv2.imshow('img', img)
if cv2.waitKey(0) & 0xFF == ord('q):
break
错误:
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow,
file /home/pi/opencv-3.3.0/modules/highgui/src/window.cpp, line 325
Traceback (most recent call last):
File "check_picam_with_opencv.py", line 10, in <module>
cv2.imshow('img', img)
cv2.error: /home/pi/opencv-3.3.0/modules/highgui/src/window.cpp:325: error:
(-215) size.width>0 && size.height>0 in function imshow
答案 0 :(得分:5)
为VideoCapture
提供ID。
cap = cv2.VideoCapture(0)
同时检查ret
的值,看看它是TRUE
还是FALSE
print (ret)
修改强>
要捕获视频,您需要创建一个VideoCapture对象。它的参数可以是设备索引或视频文件的名称。设备索引只是指定哪个摄像机的数字。
cap = cv2.VideoCapture(0)
要检查
cap
是否已初始化,您可以使用cap.isOpened()
函数,该函数返回True
表示成功初始化,False
表示失败。
if cap.isOpened() == False:
print ("VideoCapture failed")
cap.read()
返回一个bool(True / False)。如果正确读取帧,则它将为True。因此,您可以通过检查此返回值来检查视频的结尾。
ret, frame = cap.read()
if ret == False:
print("Frame is empty")
进一步阅读here。