你可以使用以下代码来实现从文件夹的子文件夹的所有视频文件中提取图片帧,并每隔25帧保存一帧为图片文件:

import cv2
import os

def extract_frames(video_path, output_dir, frame_interval=25):
    # 打开视频文件
    cap = cv2.VideoCapture(video_path)
    # 获取视频帧率
    fps = cap.get(cv2.CAP_PROP_FPS)
    frame_count = 0

    while True:
        # 读取视频帧
        ret, frame = cap.read()
        if not ret:
            break

        # 只处理每隔 frame_interval 帧
        if frame_count % frame_interval == 0:
            # 生成输出文件路径
            output_path = os.path.join(output_dir, f"frame_{frame_count}.jpg")
            # 保存帧为图片文件
            cv2.imwrite(output_path, frame)

        frame_count += 1

    # 释放视频资源
    cap.release()

# 遍历文件夹及其子文件夹中的视频文件
def process_videos_in_folder(input_folder, output_folder):
    for root, dirs, files in os.walk(input_folder):
        for file in files:
            # 判断文件是否为视频文件
            if file.endswith(('.mp4', '.avi', '.mov')):
                video_path = os.path.join(root, file)
                # 提取视频帧并保存为图片文件
                extract_frames(video_path, output_folder)

# 指定输入文件夹和输出文件夹
input_folder = "your_input_folder"
output_folder = "your_output_folder"

# 处理视频文件并提取图片帧
process_videos_in_folder(input_folder, output_folder)

请将 your_input_folder 替换为包含视频文件的文件夹路径,将 your_output_folder 替换为保存图片帧的文件夹路径

一段python代码:如何用opencv从文件夹的子文件夹的所有视频文件中取图片帧每隔25帧取1帧并保存为图片文件

原文地址: https://www.cveoy.top/t/topic/ipIl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录