Skip to content

linfree/Jump-Rope-Counter

Repository files navigation

Jump Rope Counter

一个基于 Python + Streamlit 的本地跳绳计数工具。上传跳绳视频后,程序会从视频中提取音频,识别绳子落地的冲击声,并给出跳绳总次数、速度变化趋势和多张分析图表,方便复盘训练节奏。

功能

  • 支持常见视频格式:mp4movavimkvm4v
  • 自动从视频中提取音频并转为单声道分析
  • 基于音频峰值估算跳绳次数
  • 提供灵敏度和最小跳绳间隔两个调节参数
  • 展示波形图、峰值强度图、速度变化曲线、响度图、频谱图
  • 内置回放面板,播放时可同步查看识别到的跳绳点
  • 可导出识别到的峰值时间点 CSV
  • 支持打包为 Windows 可执行文件

界面截图

首页

分析结果

图表与回放

适用场景

  • 训练后快速估算整段跳绳总次数
  • 观察前中后段速度是否掉速
  • 对比不同训练视频的节奏稳定性
  • 辅助分析是否需要提升配速、稳定性或耐力

计数原理

  1. 使用 moviepy 从视频中提取音频。
  2. 对音频做带通滤波,保留更接近绳子拍地的频段。
  3. 使用 librosa 提取更强调瞬态冲击的 onset strength。
  4. 使用 scipy.signal.find_peaks 检测跳绳落地点。
  5. 根据峰值数量统计总次数,并根据相邻峰值间隔换算跳绳速度。

这是一种基于声音的估算方法,不是逐帧视觉识别。

环境要求

  • Python 3.11
  • Windows
  • 推荐使用带清晰拍地声的视频

本地运行

python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python launcher.py

启动后浏览器会自动打开本地页面。默认地址通常是:

http://localhost:8501

打包 EXE

.venv\Scripts\activate
pyinstaller JumpRopeCounter.spec --noconfirm

打包完成后可执行文件位于:

dist\JumpRopeCounter.exe

项目结构

.
├─ app.py                     # Streamlit 界面与图表
├─ analyzer.py                # 音频分析与峰值检测
├─ launcher.py                # Streamlit 启动入口
├─ JumpRopeCounter.spec       # PyInstaller 单文件打包配置
├─ JumpRopeCounterDir.spec    # PyInstaller 单目录打包配置
├─ docs/screenshots/          # README 截图
└─ requirements.txt           # Python 依赖

使用建议

  • 尽量选择环境噪声较小的视频
  • 绳子拍地声越清晰,识别通常越稳定
  • 如果计数偏多,可适当提高灵敏度或增大最小跳绳间隔
  • 如果计数偏少,可适当降低灵敏度
  • 结合“跳绳速度变化”曲线看自己是否存在明显掉速

已知限制

  • 这是音频估算,不适合完全无拍地声的视频
  • 背景音乐、说话声、强回声可能干扰识别
  • 当前 EXE 体积较大,主要由科学计算和视频处理依赖带来

License

MIT

About

视频统计跳绳数量

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages