| import os | |
| import sys | |
| import cv2 | |
| from decord import VideoReader | |
| from decord import cpu | |
| def save_frames(video_path, output_folder): | |
| # 创建输出文件夹 | |
| if not os.path.exists(output_folder): | |
| os.makedirs(output_folder) | |
| # 初始化 VideoReader | |
| vr = VideoReader(video_path, ctx=cpu(0)) | |
| # 获取视频的总帧数 | |
| total_frames = len(vr) | |
| # 遍历每一帧并保存 | |
| for i in range(total_frames): | |
| # 读取第 i 帧 | |
| frame = vr[i].asnumpy() | |
| # 保存帧为图片 | |
| frame_path = os.path.join(output_folder, f"{i:04d}.jpg") | |
| # must CV2 需要的事 BGR 格式的数组 | |
| frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR) # 显式转换 | |
| cv2.imwrite(frame_path, frame) | |
| print(f"Saved frame {i} to {frame_path}") | |
| # 示例用法 | |
| video_path = sys.argv[1] | |
| output_folder = sys.argv[2] | |
| save_frames(video_path, output_folder) | |