我使用了这段代码。
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()。 我不明白什么似乎是问题,没有错误。
答案 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')