有没有办法在opencv-python中显示最后一帧?



我需要显示视频的最后一帧。我可以手动计算最后一帧数并运行下面的代码。

last_frame_num = duration_in_seconds * video_fps #manual entry
vs = cv2.VideoCapture('test.mp4')
vs.set(cv2.CAP_PROP_POS_FRAMES, last_frame_num)
while True:
ret, frame = vs.read()
if ret:
cv2.imshow('last_frame', frame)
if cv2.waitKey(0) == 27:
break
vs.release()
cv2.destroyAllWindows()

第一行代码是手动输入。

有没有办法直接获取任何视频的最后一帧号?

由于您想要视频的最后一帧,因此可以使用 VideoCapture::get 和属性 CAP_PROP_FRAME_COUNT。这将为您提供视频中的帧数。您可以尝试将其分配给您的变量,如下所示:

last_frame_num = vs.get(cv2.CAP_PROP_FRAME_COUNT)

在我看来,它也应该有一个-1,因为CAP_PROP_POS_FRAMES采用"接下来要解码/捕获的帧的 0 基索引"。但是,很高兴看到即使没有 -1,它也对您有用。

最新更新