有没有办法在opencvpython中显示最后一帧?

2024-06-02 04:54:01 发布

您现在位置: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()

第一行代码是手动输入

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


Tags: 代码in视频ifvideo手动cv2frame
1条回答
网友
1楼 · 发布于 2024-06-02 04:54:01

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

last_frame_num = vs.get(cv2.CAP_PROP_FRAME_COUNT)

在我看来,它也应该有一个-1,因为CAP_PROP_POS_FRAMES取“下一个要解码/捕获的帧的基于0的索引”。然而,很高兴看到它在没有-1的情况下对您有效

相关问题 更多 >