cv2.VideoCapture错误

时间:2016-01-18 09:52:24

标签: python opencv

关于cv2.VideoCapture已经存在很多问题,但它对我没有帮助。 我正在使用OpenCV 2.4.10和python 2.7.9,我试图从内置网络摄像头(东芝,Windows 7)捕获视频。我正在使用此代码

import numpy as np 
import cv2

cap = cv2.VideoCapture(1)
print cap.isOpened()
print cap.get(3)
print cap.get(4)
while(True):
    ret,frame=cap.read()
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

问题是,当我第一次运行此代码时,它会抛出错误:error: (-215) size.width>0 && size.height>0 in function cv::imshow

error

等到几分钟之后,我再次运行此代码,这次没关系 fine

这种情况一次又一次地发生,有时它的工作正常,但有时会失败并给出错误。对此有何解决方案?

我将opencv_ffmpeg2410.dll文件从C:\Applications\opencv\build\x86\vc10\bin复制到python路径C:\Python27OpenCV 2.4 VideoCapture not working on Windows

我试过cv2.VideoCapture(0),但在这种情况下,网络摄像头甚至没有启动(网络摄像头灯没有闪烁)

1 个答案:

答案 0 :(得分:4)

由于您没有检查ret返回值的值,cap.read()可能会给您一个错误的框架。

替换为

之类的内容
while True:
    ret, frame = cap.read()
    if ret:
        cv2.imshow('window', frame)
        # ...