我试图使用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)
答案 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