请写一段代码使其实现对一个文件夹内的所有视频进行每隔两秒取中间的帧并保存为图像
以下是一个使用OpenCV库实现的Python代码示例,可以对指定文件夹内的所有视频文件进行处理,每隔两秒取中间的帧并保存为图像文件。
import cv2
import os
def extract_frames(video_path, output_folder):
# 读取视频文件
cap = cv2.VideoCapture(video_path)
# 获取视频帧率和总帧数
fps = cap.get(cv2.CAP_PROP_FPS)
total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
# 计算每隔两秒取帧的间隔
interval = int(fps * 2)
# 定义保存图像的计数器
count = 0
# 逐帧读取视频并保存中间帧
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
# 只保存中间帧
if count % interval == interval // 2:
# 构造图像文件名
img_name = os.path.join(output_folder, f"frame_{count}.jpg")
# 保存图像文件
cv2.imwrite(img_name, frame)
print(f"Saved frame {count} as {img_name}")
count += 1
# 释放视频对象
cap.release()
# 指定视频文件夹路径
video_folder = "path/to/video/folder"
# 指定保存图像的文件夹路径
output_folder = "path/to/output/folder"
# 遍历视频文件夹内的所有文件
for filename in os.listdir(video_folder):
if filename.endswith(".mp4"):
# 构造视频文件路径
video_path = os.path.join(video_folder, filename)
# 调用函数提取帧并保存图像
extract_frames(video_path, output_folder)
请将path/to/video/folder替换为包含视频文件的实际文件夹路径,将path/to/output/folder替换为保存图像文件的实际文件夹路径。运行代码后,它将遍历视频文件夹中的所有.mp4文件,并将每个视频的每隔两秒的中间帧保存为图像文件。图像文件将以frame_0.jpg、frame_1.jpg等命名,并保存在指定的输出文件夹中。
原文地址: https://www.cveoy.top/t/topic/hPYi 著作权归作者所有。请勿转载和采集!