新闻详情

新闻详情

首页 / 资讯中心 / 详情

用 ffmpeg + OpenCV 把施工延时视频自动抽帧,生成「每日进度九宫格」(Python 批处理实战)

发布时间:2026/9/28 18:20:09来源:尧图网络
用 ffmpeg + OpenCV 把施工延时视频自动抽帧,生成「每日进度九宫格」(Python 批处理实战)
做装修巡检或工地记录时经常要面对几十 G 的延时录像。人工一帧帧翻太低效本文用一段 Python 脚本把一段长视频按固定时间间隔自动抽帧再用 OpenCV Pillow 拼成一张「每日进度九宫格」既能发日报也能做前后对比。一、整体思路1. 用ffmpeg按-vf fps1/N把视频均匀抽成图片序列不依赖逐帧解码速度快2. 用 OpenCV 读取这些帧统一缩放到固定尺寸3. 用 Pillow 把多张图拼成 3×3 九宫格或 N×M 网格4. 批处理遍历一个文件夹里的所有.mp4每个生成一个九宫格。 为什么不全用 OpenCV 解码ffmpeg的抽帧对大视频更稳、可指定时间步长避免把整段视频读进内存。## 二、ffmpeg 抽帧核心命令bash# 每 600 秒10 分钟抽 1 帧输出 frame_0001.jpg ...ffmpeg -i input.mp4 -vf fps1/600 -qscale:v 2 frames/frame_%04d.jpg-fps1/600每 600 秒 1 帧想更密就调小比如1/60每分钟 1 帧。--qscale:v 2JPG 质量2 接近无损、体积小。## 三、Python 拼九宫格pythonimport cv2, glob, osfrom PIL import Imagedef make_grid(frame_dir, out_path, cols3, rows3, size(320, 180)): files sorted(glob.glob(os.path.join(frame_dir, *.jpg)))[:cols*rows] if not files: return False thumbs [cv2.cvtColor(cv2.resize(cv2.imread(f), size), cv2.COLOR_BGR2RGB) for f in files] # 用黑块补齐不足 9 张的情况 while len(thumbs) cols * rows: import numpy as np thumbs.append(np.zeros((size[1], size[0], 3), dtypenp.uint8)) w, h size grid Image.new(RGB, (w * cols, h * rows)) for idx, im in enumerate(thumbs): r, c divmod(idx, cols) grid.paste(Image.fromarray(im), (c * w, r * h)) grid.save(out_path) return Truemake_grid(frames, progress_grid.jpg)关键点- OpenCV 读到的是 BGR拼图前转成 RGB否则颜色会偏蓝- 用sorted保证帧顺序否则九宫格会被打乱- 帧数不足时补黑块避免IndexError。## 四、批处理整个文件夹pythonimport osfor mp4 in glob.glob(videos/*.mp4): name os.path.splitext(os.path.basename(mp4))[0] frame_dir ftmp/{name}_frames os.makedirs(frame_dir, exist_okTrue) os.system(fffmpeg -i {mp4} -vf fps1/600 -qscale:v 2 {frame_dir}/frame_%04d.jpg) make_grid(frame_dir, fgrids/{name}_grid.jpg)跑完grids/下就是每个视频对应的九宫格直接发日报、做周报对比都行。## 五、踩过的坑-中文路径os.system调 ffmpeg 时Windows 下中文路径偶尔抽风建议先import subprocess用subprocess.run([...], shellFalse)传列表参数比拼字符串稳妥。-帧太多内存爆别一次性cv2.VideoCapture读完整个长视频始终走 ffmpeg 抽帧落地再读图。-时间戳叠加可在抽帧时加-vf fps1/600,drawtext...把时间烧录进画面九宫格一眼看出是第几天。这套方法我们做工地巡检日报时天天在用比人工翻视频省了 90% 时间。类似的「把重复劳动交给脚本」的思路我们也沉淀成了几款小工具整理在 maixuzi.cn/resources/ 感兴趣的可以看看。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

从 10 万 Token 浪费到 500 行精准命中:TaoToken 工程化配置实战 2026/9/28 19:20:50

从 10 万 Token 浪费到 500 行精准命中:TaoToken 工程化配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
实测对比|2026 热门 AI 论文生成软件,TaoToken 统一 Key 接入哪款最适配大学生 / 研究生? 2026/9/28 19:20:50

实测对比|2026 热门 AI 论文生成软件,TaoToken 统一 Key 接入哪款最适配大学生 / 研究生?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Trae 生成引入 Skills 最全文档:从 SKILL.md 到智能体配置的完整指南 2026/9/28 19:20:50

Trae 生成引入 Skills 最全文档:从 SKILL.md 到智能体配置的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
开源项目oh-my-claudecode分析:从skill与agent设计到TaoToken统一API接入实践 2026/9/28 19:20:50

开源项目oh-my-claudecode分析:从skill与agent设计到TaoToken统一API接入实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
开店选址调研:用地图 API 做竞对密度盘点 2026/9/28 19:20:50

开店选址调研:用地图 API 做竞对密度盘点

开店选址调研:用地图 API 做竞对密度盘点 开奶茶店、咖啡店、健身房之前,谁都想知道一个问题:这条街上已经有多少家同行了?传统做法是踩点、数铺、问中介,一天能看两条街。用地图 API 可以一晚扫完半个城区,而且结论是可复算的——同一个坐标、同一个缩放级别,下个月再跑一遍…

阅读更多 →
国产开源大模型盘点:从 CodeGeeX 到 AI Agent 的 TaoToken 接入实践 2026/9/28 19:20:43

国产开源大模型盘点:从 CodeGeeX 到 AI Agent 的 TaoToken 接入实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉