从滚动视频乐谱中,截取、识别、拼接并重分割,格式化生成可打印的曲谱图像。
- 支持竖向或横向滚动的曲谱视频
- 识别谱线并自动化拼接
- 易用的手动拼接调整工具
- 基础曲谱样式编辑
- 支持MSS库或命令行工具实现跨平台截图
- 基于窗口的动态预览定位
- 从视频文件中定位并提取图片
- 响应式UI设置
- 基于QtAds的Docking布局
- 基于鼠标框选的定位系统
- 更加完善的跨平台支持
- 五线谱优化
- 多音轨支持
- English
- 简体中文
从源码运行 / 开发
获取源码并进入项目根目录:git clone https://github.com/Carrot-shreds/score_capture.git
cd score_capture
安装uv环境:
curl -LsSf https://astral.sh/uv/install.sh | sh (Linux/MacOS)
winget install --id=astral-sh.uv -e (Windows)
或
pip install uv
同步构建环境(默认不包含开发依赖):
uv sync
或
uv sync --dev
编译Qt资源文件:
uv run tools.py build
运行程序入口:
uv run main.py
(Linux) bash main.sh
获取仓库更新:
git pull
从源码编译:
uv run build.py
如果您使用Win10及以上的64位Windows系统,请下载最新 release 中的 score_capture_xxx_win64.zip。解压到合适的位置后,点击 score_capture.exe 即可启动。不需要进行额外的安装,所有配置和依赖都被打包到独立文件夹中,方便移动和卸载。
对于MacOS和Linux用户,目前并不提供预编译版本,请自行参考上文中的说明,并尝试从源码运行。
## 图片
capture:截图保存的单张原始图片,按设置可能经过反色处理
image:对capture分组进行均值的图片,供后续使用
detected:在原始图像上叠加了线段检测的结果
stitched:对image拼接后的图片
barlines:仅小节线识别的预览,用于重分割
reclip:重分割后的横向拼接图片,或与竖直拼接图片相同
## 数据文件(json)
CaptureData:存储capture间的比较数据,用于重新生成image
ScoreDetections:作为image的线段检测缓存,用于拼接
StitchData:拼接点结果数据,可以从手动拼接窗口打开可视化编辑
StyleData:存储最终生成图片的样式信息
位于 config 文件夹中。
AppSettings:存储了应用的绝大部分设置,可以手动编辑配置
AppSettingsSavingConfig:AppSettings默认开启了始终保存所有设置,如果关闭的话,则只会保存在AppSettingsSavingConfig中设置为true的项。
dockSettings:存储了当前所有的UI视图预设
建议经常保存配置文件的备份,以避免意外丢失或覆盖,只需要简单地复制一份config文件夹即可。
图片文件名:capture[1-n] -> image[1-n] -> title-stitched -> title-recliped -> title[1-n]
- 使用
[主输出目录]//[文件夹标题]作为工作目录。 - (定位) 通过定位窗口获取曲谱位置。
- (预览) 通过预览窗口预览范围和线段识别参数(可选)。
- (截图) 启动截图,播放视频,结束截图。在此过程中,每隔指定时间截图生成一张
capture*.*图像。之后将两张以上“相同”(比较相似度)capture生成一张image*.*。
- 也可以通过
视频切取页面直接从本地视频中提取帧,保存到capture,之后构建生成image。
- (识别) 使用设置的参数对每张image进行线段识别,生成
image-detected以及ScoreDetections.json,主要需要使用小节线(即竖直线)的位置作为拼接时的参考。 - (拼接) 以各小节线前后的范围为参考,拼接相邻的image,比较获得两张图像重叠最“完美”(最相似)的位置,保存到
ScoreStitchData.json,并拼接生成title-stitched。 - (重分割) 对
title-stitched进行线段检测,生成title-stitched-detected与title-stitched-barlines,主要也是获得拼接图中的小节线,用来将横向的长图从小节线前后切开,重新排版到竖向,生成title-reclip。 - 如果stitched图像本身就是竖向拼接的,那么则会额外检测反转的水平线,也就是两整行曲谱间的空白部分,以避免切分时将单行分开,保存预览到
title-blank-gaps图像。 - (样式编辑) 对
title-reclip按打印比例切分,添加边距/标题/页码等样式,最终生成title*.*,或保存到PDF。
## 主界面
Ctrl 1-9:切换界面预设序号
F12:切换窗口置顶状态
F1-F5:主操作工具栏
## 文件
Ctrl-o:打开一个文件夹作为工作文件夹
Ctrl-r:重命名当前文件夹
Ctrl-p:打印当前的曲谱结果
## 定位
鼠标左键双击:切换显示模式
鼠标右键双击:最小化窗口
F12:切换窗口置顶状态
l: 更新定位
p: 显示预览
## 手动拼接页面
1-3:切换页面
↑/↓:切换拼接点
←/→:调整当前拼接点数值
↑/↓/←/→ + Ctrl/Shift:不同的调整步长
PageUp/PageDown:最小/最大拼接点数值
Home/End:最小/最大拼接序号
Ctrl+s:保存拼接数据和结果图片
是的!本项目基于 Python 与 PySide(Qt 的 Python 绑定),设计上能够支持 Windows / MacOS / Linux 系统桌面端跨平台。但是目前除 Windows 外的测试仍然比较欠缺,可能会存在一定的兼容性问题。
Python 官方在 3.9 版本之后放弃了对 Win7 的支持,需要依赖额外的社区移植,暂时并没有这个计划。
请确保选择了正确的字体,包含标题显示所需的字符集。以及勾选了“添加标题”选项,并保证设置了足够的“标题高度”。
在 Linux 上运行时请使用 bash main.sh 启动主程序,以确保加载 libfcitx5 插件。如果预编译插件加载失败,尝试使用 bash fcitx5-qt.sh 重新编译。
考虑到曲谱类型的多样,以及视频质量的不同,开发测试通常无法覆盖全部情况。开发将会优先考虑 横向滚动的 TAB 曲谱,而关于纵向滚动、五线谱等其他类型的支持,则需要通过更多的用户测试与反馈进行改善。如果遇到了问题,请尝试使用手动拼接工具,或是将其作为一个 issue 进行反馈。
本项目仍在持续开发当中,欢迎各种形式的贡献,包括但不限于:
- 报告漏洞
- 新功能建议
- 文档内容补充
- 跨平台测试反馈
- 改进 i18n 翻译
通过 Github issues 报告错误时,请提供尽可能完整的信息,包括工作目录中的日志、图片等文件,log 文件夹中的主日志,系统版本环境,配置文件信息,在线视频链接等。
如果您有兴趣为 Score Capture 贡献想法或代码,可以联系 Carrot_shreds@163.com。
Score Capture是基于 GPL v3 协议开源的自由软件,禁止闭源的商业售卖与分发。
本软件截取生成的曲谱,仅供学习交流使用,相关内容版权均归视频或曲谱的原作者所有。未经原作者授权,禁止用于其他用途。因使用本软件产生的版权问题,软件作者概不负责。



