Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

AltStyle によって変換されたページ (->オリジナル) /