视频抽帧处理笔记

630 字
3 分钟
视频抽帧处理笔记

视频抽帧处理笔记#

视频抽帧是制作视觉数据集的常见方法,但直接每帧都保存会产生大量重复图片。抽帧策略要根据目标变化速度和标注成本来定。

抽得太密,数据重复;抽得太稀,容易错过关键动作。

按间隔抽帧#

import cv2
from pathlib import Path
video = cv2.VideoCapture("demo.mp4")
out_dir = Path("frames")
out_dir.mkdir(exist_ok=True)
frame_id = 0
saved = 0
while True:
ok, frame = video.read()
if not ok:
break
if frame_id % 30 == 0:
cv2.imwrite(str(out_dir / f"frame_{frame_id:06d}.jpg"), frame)
saved += 1
frame_id += 1
print("frames", frame_id, "saved", saved)

命名要可追溯#

文件名最好包含视频名和帧号,例如 camera01_000300.jpg。以后发现某张图有问题,可以回到原视频定位。

抽帧后去重#

固定间隔抽帧仍然可能产生大量相似图。可以先按场景或时间段抽样查看,再决定是否需要感知哈希去重。

质量检查#

  • 是否有黑屏、花屏、模糊帧。

  • 目标是否足够清晰。

  • 不同场景是否覆盖。

  • 抽帧数量是否和标注人力匹配。

实战复盘#

把《视频抽帧处理笔记》用于真实视觉项目时,我会先做可视化抽查。图像任务里很多错误不会抛异常,例如颜色通道反了、检测框偏移、标签和图片不同步,但一张可视化结果就能暴露。

每个处理步骤都应该保存少量中间结果:原图、处理后图片、mask、绘制框图片或预测输出。不要只保存最终模型指标,因为指标无法告诉你是哪一步把数据处理坏了。

如果文章涉及批量处理,还要记录成功数量、失败数量和失败样本路径。视觉项目的数据量一大,没有失败清单就很难复查。

最小验收样例#

验收《视频抽帧处理笔记》时,我会固定三张图片:一张正常样例、一张边界样例、一张容易失败的样例。每次改代码都用这三张图跑一遍,并保存输出结果。

视觉流程的验收必须能用眼睛确认。只打印数组 shape 或命令成功不够,至少要保存一张中间结果图或最终可视化图,确认处理效果和预期一致。

小结#

视频抽帧要在覆盖场景和控制重复之间取平衡。命名可追溯、抽样检查清楚,后续标注才不会失控。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

视频抽帧处理笔记
https://blog.tjcheng.cn/posts/backfill/2026-06-12/cv-video-frame-extract/
作者
TengJinCheng
发布于
2026-06-12
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
TengJinCheng
Hello, I'm Teng.
公告
欢迎来到TengJinCheng工作铺!
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
157
分类
7
标签
114
总字数
109,939
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.4
文章许可
CC BY-NC-SA 4.0

文章目录