我正在尝试将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
应该以秒为单位。
我用打印检查了秒值,它们正在正确计数。
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)
的代码
我希望得到612帧
答案 0 :(得分:0)
我用自己的视频文件尝试了此操作,它似乎可以正常工作。
您可以尝试手动设置FPS:
vidcap.set(cv2.CV_CAP_PROP_FPS, 30.0)
如果失败,请尝试直接移动框架并观察其吐出的图像:
vidcap.set(cv2.CV_CAP_PROP_POS_FRAMES, sec*30.0)