智能视频关键帧提取工具,用于从视频中自动提取具有代表性的关键帧。
- 智能变化检测:基于帧间差异检测场景变化
- 单色帧过滤:自动跳过大面积单色或白色画面
- 过渡期处理:智能识别视频过渡期,等待画面稳定后提取
- 可调参数:支持自定义变化阈值、最小帧间隔等参数
- 图形界面:简洁易用的 Tkinter 图形界面
- 拖拽支持:支持拖拽视频文件到窗口
- Python 3.7+
- 依赖包:
- opencv-python >= 4.8.0
- tkinterdnd2 >= 0.3.0
- 克隆或下载项目
- 安装依赖:
pip install -r requirements.txt
python main.py
-
选择视频文件:
- 点击"选择视频"按钮,或直接拖拽视频文件到窗口
- 支持格式:MP4, MOV, AVI, MKV, FLV
-
设置输出文件夹:
- 默认会在视频同目录下创建
pic文件夹 - 可点击"选择文件夹"自定义输出路径
- 默认会在视频同目录下创建
-
调整参数:
- 变化阈值:检测画面变化的敏感度(推荐 20-50)
- 最小帧间隔:两帧之间的最小间隔帧数
- 单色跳过阈值:跳过大面积单色画面的阈值(0-1)
- 白色跳过阈值:跳过大面积白色画面的阈值(0-1)
-
开始提取:
- 点击"开始提取"按钮
- 可选择"开始前删除 pic 文件夹"清理之前的输出
- 处理过程中可点击"停止"中断
- 控制帧间差异检测的敏感度
- 值越小,检测越敏感,提取的帧越多
- 值越大,只检测明显变化,提取的帧越少
- 推荐范围:20-50
- 两个关键帧之间的最小间隔帧数
- 防止在短时间内提取过多相似帧
- 建议值:5-10
- 当画面中单一颜色占比超过此值时跳过该帧
- 用于过滤纯色背景、加载页面等
- 范围:0-1,0.5 表示 50%
- 当画面中白色区域占比超过此值时跳过该帧
- 用于过滤白屏、空白页等
- 范围:0-1,0.5 表示 50%
- 帧差检测:计算相邻帧的灰度差异,识别场景变化
- 过渡期识别:检测到变化后进入过渡期,等待画面稳定
- 稳定性验证:连续若干帧变化小于阈值时认为画面稳定
- 内容过滤:跳过大面积单色或白色画面
- 间隔控制:确保提取的关键帧之间有足够间隔
- 提取的关键帧保存为 JPG 格式
- 文件名格式:
frame_XXXXXX.jpg(6位数字序号) - 保存位置:指定的输出文件夹
- 程序支持多线程处理,界面不会卡顿
- 大视频文件处理需要一定时间,请耐心等待
- 建议根据视频内容特点调整参数以获得最佳效果
- 如遇到拖拽功能不可用,请确保已安装
tkinterdnd2
- Windows / macOS / Linux
- Python 3.7 或更高版本
- 足够的磁盘空间存储提取的帧图像
本项目采用开源许可证,具体请查看项目文件。