python代码:
import os
import cv2
def extract_frames(file_path, target_fps, output_dir):
# 打开视频文件
cap = cv2.VideoCapture(file_path)
# 检查视频是否成功打开
if not cap.isOpened():
print("Error: Unable to open video file.")
return
# 获取视频的原始帧率
fps = cap.get(cv2.CAP_PROP_FPS)
# 计算每隔多少帧读取一帧
frame_interval = int(fps / target_fps) if fps > target_fps else 1
# 设置帧计数器
frame_count = 0
# 创建保存帧的目录
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 逐帧读取视频
while True:
ret, frame = cap.read()
# 检查是否成功读取帧
if not ret:
break
# 检查帧计数器是否达到指定帧间隔
if frame_count % frame_interval == 0:
# 保存帧为图像
img_name = f"frame_{frame_count}.jpg"
img_path = os.path.join(output_dir, img_name)
cv2.imwrite(img_path, frame)
# print("Saved frame:", img_path)
frame_count += 1
# 释放视频对象
cap.release()
extract_frames(video_path, 10, output_path)