import cv2 import os def extract_frames(video_path, output_folder, num_frames=40): # 确保输出文件夹存在 if not os.path.exists(output_folder): os.makedirs(output_folder) # 打开视频 video_capture = cv2.VideoCapture(video_path) if not video_capture.isOpened(): print("无法打开视频,请检查路径是否正确!") return total_frames = int(video_capture.get(cv2.CAP_PROP_FRAME_COUNT)) if total_frames == 0: print("视频文件无帧,请检查文件是否损坏!") return frame_rate = total_frames // num_frames print(f"总帧数: {total_frames}, 每隔 {frame_rate} 帧截取一张图片") count = 0 saved_count = 0 while True: ret, frame = video_capture.read() if not ret: break # 每隔 frame_rate 保存 if count % frame_rate == 0 and saved_count < num_frames: output_path = os.path.join(output_folder, f"image_{saved_count:03d}.jpg") success = cv2.imwrite(output_path, frame) if success: print(f"成功保存图片: {output_path}") saved_count += 1 else: print(f"保存失败: {output_path}") count += 1 video_capture.release() print("视频帧提取完成!") # 示例用法 video_path = r"" # 使用绝对路径 output_folder = r""# 使用绝对路径 extract_frames(video_path, output_folder, num_frames=30)