一、前期准备:安装依赖库
核心使用 opencv-python(OpenCV)库处理视频和图像,这是 Python 视觉处理的主流库。先通过 pip 安装:
# 安装 opencv-python
pip install opencv-python
# 若需处理特殊视频格式(如 MP4 编码问题),可额外安装 ffmpeg(可选)
# Windows:下载 ffmpeg 并配置环境变量;Ubuntu:sudo apt install ffmpeg;Mac:brew install ffmpeg
二、方案 1:基础版 - 按帧提取(提取所有帧/每隔 N 帧提取)
适合大多数标注场景,可灵活设置提取间隔,避免图片过多冗余。
完整代码
import cv2
import os
def video_to_images_basic(
video_path, # 输入视频文件路径(如:test.mp4)
output_dir, # 输出图片文件夹路径
frame_interval=30, # 提取间隔:每 30 帧提取 1 张(默认 30 帧,对应 1 秒/帧,可调整)
img_format="jpg", # 输出图片格式(jpg/png,推荐 jpg,占用空间小)
img_prefix="frame" # 图片文件名前缀(如:frame_0001.jpg)
):
# 1. 创建输出文件夹(若不存在则自动创建)
if not os.path.exists(output_dir):
os.makedirs(output_dir)
print(f"创建输出文件夹:{output_dir}")
# 2. 打开视频文件
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
raise ValueError(f"无法打开视频文件:{video_path}")
# 3. 获取视频基本信息
total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) # 视频总帧数
fps = cap.get(cv2.CAP_PROP_FPS) # 视频帧率(每秒帧数)
print(f"视频信息:总帧数={total_frames},帧率=,预计提取图片数=")
frame_count =
saved_count =
:
ret, frame = cap.read()
ret:
frame_count % frame_interval == :
img_name =
img_path = os.path.join(output_dir, img_name)
cv2.imwrite(img_path, frame)
()
saved_count +=
frame_count +=
cap.release()
()
__name__ == :
VIDEO_PATH =
OUTPUT_DIR =
FRAME_INTERVAL =
video_to_images_basic(
video_path=VIDEO_PATH,
output_dir=OUTPUT_DIR,
frame_interval=FRAME_INTERVAL,
img_format=
)

