从文件夹中的所有视频中抓取视频帧,用 openCV 处理,保存到自己的文件夹?

Grab video frames from all videos in folder, process with openCV, save to own folder?

我有这样的代码。我知道这不正确,但我是新手,不确定如何解决。我如何才能让 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.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)

如果我没理解错的话,你要做的是将行 if currentFrame == 5: 更改为 if currentFrame % (3 * fps) == 0: 在该行之前,在循环外,添加 fps = cap.get(cv2.CAP_PROP_FPS)