在VideoCapture之后读取图像时,OpenCV Python会挂起

时间:2013-04-07 05:01:30

标签: python opencv video

我试图使用opencv python包装器来读取视频文件,代码工作正常,但几分钟后capture.read()开始返回空图像。我尝试了几个不同的视频文件,并使用官方文档here中指定的所有编码视频格式:我尝试使用virtualdub和mencoder。我正在使用Python 2.7,opencv 2.4.4和win7。这是我使用的代码:

import cv2
c = cv2.VideoCapture("work.avi")
cv2.namedWindow("input")
f = True
while(f):
    f,img = c.read() # After some minutes all frames returnes are empty and f is false
                     # This doesn't throws any exception
    try:
        cv2.imshow("input",img)
    except cv2.error as e:
        print e # print error: (-206) Unrecognized or unsupported array type
    cv2.waitKey(1)

1 个答案:

答案 0 :(得分:1)

视频文件是否只是到达终点?

来自http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html cv2.VideoCapture.read的文档:“如果没有抓取任何帧(相机已断开连接,或视频文件中没有更多帧),则方法返回false和函数返回一个NULL指针。“

上面的代码没有检查文件是否已到达结尾,因此它将继续运行并返回+显示空白图像。

行后

f,img = c.read()

添加:

if not f:
    break