有很多使用
的例子while (cap.isopened()):
循环播放视频,但我发现它总是在最后一帧出错。我现在正在使用它
while (cap.get(1) < cap.get(7)):
但是我需要做些什么才能让第一种方法起作用而不是出错?
我只是在while循环中做正常的事情;一个例子如下:
while (cap.get(1) < cap.get(7)): #(cap.isOpened()):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
答案 0 :(得分:2)
第一种方法很可能失败,因为你在视频结束后读取一帧(因此得到一个空白帧),然后尝试对那些不允许的空白帧做事。您可以添加一个检查以查看您获得的框架是否为空白:
while(cap.isOpened()):
ret, frame = cap.read()
if frame is None:
break
我认为这应该可以解决这个问题。