Python 从文件夹中的所有视频抓取视频帧,使用openCV处理,保存到自己的文件夹?
我有这样的代码。我知道这是不对的,但我对这方面还不太熟悉,不知道如何解决它。如何使cv2在文件夹中的每个视频上运行,每3秒拍摄一帧,并将帧图像保存在Python 从文件夹中的所有视频抓取视频帧,使用openCV处理,保存到自己的文件夹?,python,opencv,video-processing,Python,Opencv,Video Processing,我有这样的代码。我知道这是不对的,但我对这方面还不太熟悉,不知道如何解决它。如何使cv2在文件夹中的每个视频上运行,每3秒拍摄一帧,并将帧图像保存在/data/--ex./data/rise_of_skywalker中的新文件夹中 谢谢 import cv2 import numpy as np import os def frame_capture(file): cap = cv2.VideoCapture(file) try: if not os.path.
/data/--ex./data/rise_of_skywalker
中的新文件夹中
谢谢
import cv2
import numpy as np
import os
def frame_capture(file):
cap = cv2.VideoCapture(file)
try:
if not os.path.exists('data'):
os.makedirs('data')
except OSError:
print('Error: Creating directory of data')
currentFrame = 0
while(True):
# Capture frame by frame
ret, frame = cap.read()
'''
(((how do I change this block here to get it for every 3 seconds?)))
'''
if currentFrame == 5:
name = './data/frame' + str(currentFrame) + '.jpg'
print ('Creating...' + name)
cv2.imwrite(name, frame)
# To stop duplicate images
currentFrame += 1
cap.release()
cv2.destroyAllWindows()
print ("Done!")
for file in os.listdir("/users/x/Desktop/y/videos"):
if file.endswith(".mp4"):
path=os.path.join("/users/x/Desktop/y/videos", file))
frame_capture(path)
如果我理解正确,您要做的是将行
如果currentFrame==5:
更改为如果currentFrame%(3*fps)==0:
在这一行之前,在循环之外,添加
fps=cap.get(cv2.cap\u PROP\u fps)
使用ffmpeg
会更简单,我认为如果你能将问题减少到最低程度,人们会更容易帮助你,而这并不像你期望的那样有效。这个过程实际上可能会帮助你自己找到答案,但肯定会让回答更容易。