import os
import cv2
from pathlib import Path
# 指定视频所在目录
video_dir = r'c:\video' # 修改为你的视频目录
output_dir = r'c:\img' # 保存图片的目录
# 每秒提取帧数
frames_per_second = 1 # 每秒提取1帧
# 确保输出目录存在
Path(output_dir).mkdir(parents=True, exist_ok=True)
# 遍历指定目录中的所有文件
for filename in os.listdir(video_dir):
if filename.endswith(('.mp4', '.avi', '.mov', '.mkv')): # 根据视频格式调整
video_path = os.path.join(video_dir, filename)
# 使用 OpenCV 打开视频文件
cap = cv2.VideoCapture(video_path)
# 获取视频的帧率
fps = cap.get(cv2.CAP_PROP_FPS)
print(f"视频 {filename} 的帧率: {fps} 帧/秒")
frame_count = 0
saved_frame_count = 0
while True:
ret, frame = cap.read()
# 如果读取成功
if ret:
frame_count += 1
# 每隔一定帧数(根据fps计算每秒提取1帧)
if frame_count % int(fps / frames_per_second) == 0:
# 使用 pathlib 处理路径和文件名
image_filename = Path(filename).stem + f"_{saved_frame_count + 1}.jpg"
image_path = Path(output_dir) / image_filename
# 保存图片
cv2.imwrite(str(image_path), frame)
saved_frame_count += 1
print(f"保存图片:{image_path}")
else:
break # 如果没有更多帧可读取,跳出循环
# 释放视频对象
cap.release()
print("所有视频的帧提取完毕。")
❤️ 转载文章请注明出处,谢谢!❤️