2

我尝试使用 opencv python 包装器读取视频文件,代码工作正常,但几分钟后 capture.read() 开始返回空图像。我尝试了几个不同的视频文件,并使用了官方文档中指定的所有编码视频格式我尝试过使用 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)
4

1 回答 1

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
于 2013-04-07T05:26:46.507 回答