对视频进行抽帧提取图像
import cv2
import os
def extract_frames(video_path, output_folder, frames_per_second):
# 打开视频文件
cap = cv2.VideoCapture(video_path)
# 获取视频的帧率
fps = int(cap.get(cv2.CAP_PROP_FPS))
# 计算抽帧的间隔
frame_interval = fps // frames_per_second
# 确保输出文件夹存在
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 初始化帧计数器
frame_count = 0
while True:
# 读取视频帧
ret, frame = cap.read()
# 如果到达视频末尾,则退出循环
if not ret:
break
# 检查是否满足抽帧条件
if frame_count % frame_interval == 0:
# 构造输出文件路径
output_path = os.path.join(output_folder, f"frame_{frame_count // frame_interval}.jpg")
# 保存帧为JPG图片
cv2.imwrite(output_path, frame)
# 增加帧计数器
frame_count += 1
# 释放视频对象
cap.release()
print('完成抽帧!')
if __name__ == "__main__":
video_path = "A.MOV" # 替换成你的视频文件路径
output_folder = "A" # 替换成你想要保存帧的文件夹路径
frames_per_second = 10 # 抽帧频率,每秒10张
extract_frames(video_path, output_folder, frames_per_second)