我有一个30 fps的视频。**我需要以1 FPS的速度从视频中提取帧。**这在Python中是如何实现的?
我有下面的代码,我从网上得到的,但我不知道如果它提取帧在1 FPS。请帮助!
# Importing all necessary libraries
import cv2
import os
# Read the video from specified path
cam = cv2.VideoCapture("C:\\Users\\Admin\\PycharmProjects\\project_1\\openCV.mp4")
try:
# creating a folder named data
if not os.path.exists('data'):
os.makedirs('data')
# if not created then raise error
except OSError:
print ('Error: Creating directory of data')
# frame
currentframe = 0
while(True):
# reading from frame
ret,frame = cam.read()
if ret:
# if video is still left continue creating images
name = './data/frame' + str(currentframe) + '.jpg'
print ('Creating...' + name)
# writing the extracted images
cv2.imwrite(name, frame)
# increasing counter so that it will
# show how many frames are created
currentframe += 1
else:
break
# Release all space and windows once done
cam.release()
cv2.destroyAllWindows()
3条答案
按热度按时间gzjq41n41#
nwlls2ji2#
这是我需要从视频中提取帧时使用的代码:
您可以看到如何提取视频的特征,如
frameCount
,frameWidth
,frameHeight
,videoFPS
最后,持续时间应该是帧数除以
videoFPS
变量。所有的帧都存储在
buf
中,所以如果你想只提取1帧,那么通过buf只提取9帧(每次迭代增加视频FPS)。juud5qan3#
这是我发现的最好的代码。
rate
参数的值为1/fps