以下是一个示例代码,用于实现对一个文件夹内的所有视频进行每隔两秒进行划分并取两秒中间一秒的帧保存为图像:

import cv2
import os

def extract_frames(video_path, output_path):
    # 打开视频文件
    cap = cv2.VideoCapture(video_path)
    
    # 获取帧率
    fps = cap.get(cv2.CAP_PROP_FPS)
    
    # 获取总帧数
    total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    
    # 计算每隔两秒所需的帧数
    frames_per_interval = int(fps * 2)
    
    # 循环读取视频帧
    for i in range(0, total_frames, frames_per_interval):
        # 设置当前帧位置
        cap.set(cv2.CAP_PROP_POS_FRAMES, i)
        
        # 读取当前帧
        ret, frame = cap.read()
        
        # 如果成功读取帧
        if ret:
            # 取中间一秒的帧
            mid_frame = int(fps)
            frame = cap.read()[1][mid_frame]
            
            # 保存帧为图像
            frame_path = os.path.join(output_path, f"frame_{i}.jpg")
            cv2.imwrite(frame_path, frame)
    
    # 释放视频文件
    cap.release()

# 文件夹路径和输出路径
folder_path = "path/to/folder"
output_path = "path/to/output"

# 遍历文件夹中的所有视频文件
for filename in os.listdir(folder_path):
    if filename.endswith(".avi") or filename.endswith(".mp4"):
        video_path = os.path.join(folder_path, filename)
        extract_frames(video_path, output_path)

请将 path/to/folder 替换为包含视频文件的文件夹路径,将 path/to/output 替换为保存图像的文件夹路径。代码将遍历文件夹中的所有视频文件,并将每隔两秒的中间一秒帧保存为图像。图像将按照每个视频的帧索引命名,并保存在指定的输出文件夹中

请写一段代码使其实现对一个文件夹内的所有视频进行每隔两秒进行划分并取两秒中间一秒的帧保存为图像

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

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