Skip to content

mulua6/VideoFrameExtractor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

VideoFrameExtractor

智能视频关键帧提取工具,用于从视频中自动提取具有代表性的关键帧。

功能特点

  • 智能变化检测:基于帧间差异检测场景变化
  • 单色帧过滤:自动跳过大面积单色或白色画面
  • 过渡期处理:智能识别视频过渡期,等待画面稳定后提取
  • 可调参数:支持自定义变化阈值、最小帧间隔等参数
  • 图形界面:简洁易用的 Tkinter 图形界面
  • 拖拽支持:支持拖拽视频文件到窗口

安装要求

  • Python 3.7+
  • 依赖包:
    • opencv-python >= 4.8.0
    • tkinterdnd2 >= 0.3.0

安装步骤

  1. 克隆或下载项目
  2. 安装依赖:
    pip install -r requirements.txt

使用方法

运行程序

python main.py

操作步骤

  1. 选择视频文件

    • 点击"选择视频"按钮,或直接拖拽视频文件到窗口
    • 支持格式:MP4, MOV, AVI, MKV, FLV
  2. 设置输出文件夹

    • 默认会在视频同目录下创建 pic 文件夹
    • 可点击"选择文件夹"自定义输出路径
  3. 调整参数

    • 变化阈值:检测画面变化的敏感度(推荐 20-50)
    • 最小帧间隔:两帧之间的最小间隔帧数
    • 单色跳过阈值:跳过大面积单色画面的阈值(0-1)
    • 白色跳过阈值:跳过大面积白色画面的阈值(0-1)
  4. 开始提取

    • 点击"开始提取"按钮
    • 可选择"开始前删除 pic 文件夹"清理之前的输出
    • 处理过程中可点击"停止"中断

参数说明

变化阈值

  • 控制帧间差异检测的敏感度
  • 值越小,检测越敏感,提取的帧越多
  • 值越大,只检测明显变化,提取的帧越少
  • 推荐范围:20-50

最小帧间隔

  • 两个关键帧之间的最小间隔帧数
  • 防止在短时间内提取过多相似帧
  • 建议值:5-10

单色跳过阈值

  • 当画面中单一颜色占比超过此值时跳过该帧
  • 用于过滤纯色背景、加载页面等
  • 范围:0-1,0.5 表示 50%

白色跳过阈值

  • 当画面中白色区域占比超过此值时跳过该帧
  • 用于过滤白屏、空白页等
  • 范围:0-1,0.5 表示 50%

算法原理

  1. 帧差检测:计算相邻帧的灰度差异,识别场景变化
  2. 过渡期识别:检测到变化后进入过渡期,等待画面稳定
  3. 稳定性验证:连续若干帧变化小于阈值时认为画面稳定
  4. 内容过滤:跳过大面积单色或白色画面
  5. 间隔控制:确保提取的关键帧之间有足够间隔

输出格式

  • 提取的关键帧保存为 JPG 格式
  • 文件名格式:frame_XXXXXX.jpg(6位数字序号)
  • 保存位置:指定的输出文件夹

注意事项

  • 程序支持多线程处理,界面不会卡顿
  • 大视频文件处理需要一定时间,请耐心等待
  • 建议根据视频内容特点调整参数以获得最佳效果
  • 如遇到拖拽功能不可用,请确保已安装 tkinterdnd2

系统要求

  • Windows / macOS / Linux
  • Python 3.7 或更高版本
  • 足够的磁盘空间存储提取的帧图像

许可证

本项目采用开源许可证,具体请查看项目文件。

About

视频关键帧提取工具

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages