【问题标题】:Convert video to frames python将视频转换为帧 python
【发布时间】:2019-08-28 09:02:33
【问题描述】:

我正在尝试将 c.5 分钟的视频转换为 c.600 帧,每秒 2 帧。当我使用下面的代码时,它似乎吐出了超过 600 帧,我在能够退出命令之前达到了 13,000 帧。

这是我的 mp3 文件的属性。 长度:00:05:06 框架宽度:256 框架高度:144 数据速率:78kbps 总比特率:204kbps 帧率:30

我已确认vidcap.set(cv2.CAP_PROP_POS_MSEC,sec*1000) 以毫秒为单位,因此sec*1000 应以秒为单位。

我使用打印检查了 Sec 值,它们的计数正确。

from PIL import Image
import os, sys
import cv2
import numpy as numpy
import matplotlib.pyplot as plt


vidcap = cv2.VideoCapture('4K Traffic camera video - Low.mp4')

def getFrame(sec):
    vidcap.set(cv2.CAP_PROP_POS_MSEC,sec*1000)
    hasFrames,image = vidcap.read()
    if hasFrames:
        cv2.imwrite(os.path.join('Video_Frame_Low', str(count) + '.jpg'), image)     # save frame as JPG file
    return hasFrames

sec = 0
frameRate = 0.5 #//it will capture image in each 0.5 second
count=1
success = getFrame(sec)

while success:
    count = count + 1
    sec = sec + frameRate
    sec = round(sec, 2)
    success = getFrame(sec)

代码取自https://medium.com/@iKhushPatel/convert-video-to-images-images-to-video-using-opencv-python-db27a128a481

我希望得到 612 帧

【问题讨论】:

    标签: python opencv python-imaging-library


    【解决方案1】:

    我用我自己的视频文件尝试了这个,它似乎按预期工作。

    您可以尝试手动设置 FPS:

    vidcap.set(cv2.CV_CAP_PROP_FPS, 30.0)
    

    如果做不到这一点,请尝试直接移动帧并观察它吐出的图像:

    vidcap.set(cv2.CV_CAP_PROP_POS_FRAMES, sec*30.0)
    

    【讨论】:

      猜你喜欢
      • 2018-08-20
      • 2020-12-19
      • 1970-01-01
      • 2020-12-25
      • 2021-07-19
      • 1970-01-01
      • 2016-01-31
      • 2018-12-15
      • 2018-08-12
      相关资源
      最近更新 更多