使用opencv和python从视频中提取帧

时间:2016-04-18 18:26:01

标签: python opencv video frames

我使用了这段代码。

import cv2

vc = cv2.VideoCapture('test2.mp4')
c=1

if vc.isOpened():
    rval , frame = vc.read()

else:
    rval=False
    print("hello")

while rval:
    rval, frame = vc.read()
    cv2.imwrite(str(c) + '.jpg',frame)
    c = c + 1
    cv2.waitKey(1)

vc.release()

它在屏幕上打印出你好,这意味着没有调用vc.isOpened()。 我不明白什么似乎是问题,没有错误。

1 个答案:

答案 0 :(得分:0)

代码没有问题。 vc对象未正确分配。这就是vc.isOpened()获得False的原因。如果您使用python解释器尝试整个代码,则可以检查vc的值。您的vc.isOpened()保留False值,这就是else条件下的原因并打印hello。并且由于初始化失败,它无法读取和rval也获得False值。所以while循环没有执行。

在这里,我展示了网络摄像头读数及其值的小型演示。

In [1]: import cv2
In [2]: a = cv2.VideoCapture(0)
In [3]: a.isOpened()
Out[3]: True
In [6]: ret,frame = a.read()
In [7]: ret
Out[7]: True

因此,您必须检查视频初始化的位置或视频捕获对象。 vc = cv2.VideoCapture('test2.mp4')