这是我用于通过网络摄像头捕获视频的代码:
import cv2
cap = cv2.VideoCapture(0)
while True:
ret, frame= cap.read()
# frame= cv2.resize(frame, None,fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)
cv2.imshow('Input', frame)
c = cv2.waitKey(1)
if c == 27:
break
cap.release()
cv2.destroyAllWindows()
错误是:
OpenCV的错误:断言失败(size.width大于0&安培;&安培; size.height大于0)中imshow,文件/ IO / OpenCV的/模块/ highgui / SRC /窗口。 CPP,线325 回溯(最近通话最后一个): 文件 “video_capturing2.py”,10号线,在 cv2.imshow( '输入',帧) cv2.error:/io/opencv/modules/highgui/src/window.cpp:325:错误:(-215)size.width大于0&安培;&安培; size.height>在功能IMS 0 如何
我该如何解决?每当我运行上面的代码时,ret
标志永远不会是True
。我试过了sudo pip3 install opencv-contrib-python
,但它仍然没有帮助。
答案 0 :(得分:1)
imshow
失败,正如@ 101所指出的那样。在您的情况下,这很可能是因为您忽略cap.read()
中的空帧并调用imshow
即使cap.read
返回空图像。
要解决此问题,请将while True
循环替换为while cap.isOpened()
,或在阅读框架之前检查cap.isOpened()
是否成功。