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

标签 python opencv

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

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与属性(property) CAP_PROP_FRAME_COUNT .这将为您提供视频中的帧数。您可以尝试将其分配给您的变量,如下所示:

last_frame_num = vs.get(cv2.CAP_PROP_FRAME_COUNT)

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

关于python - 有没有办法在 opencv-python 中显示最后一帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59924971/

相关文章:

python - 如何在 google-app-engine 模板中启用方法

python - 如何获取从 QListView 中选择的项目?

python - 在 PyTorch 中,grad_fn 属性究竟存储了什么以及它是如何使用的?

opencv - 查找重复图像的软件链

c++ - 从大尺寸的 .csv 文件转换为二维数组

c++ - 无需读取整个图像的 OpenCV 图像尺寸

python - 奇怪的 SciPy Gamma 概率分布函数

Python:定义类变量时可以访问哪些范围?

image - 从一组图片中检测(并去除)划痕

c++ - 替代 VideoCapture::set in opencv