- AI 插件
- dsh-plugin
- 交互助手
- 桌面应用
【免费下载链接】dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI 视频自造专属宠物
dsh-pet 是一款一行命令装好即用的透明动画桌面宠物,它的 DIY 素材链提供了两条「绿幕视频 → 透明动画」的处理路线:自动 HSV 抠像(chroma_step02.py)与PR 手工遮罩(pr_import_step02.py)。本文带你彻底搞懂这两条透明处理路线各自怎么工作、优劣在哪,以及遇到残边、误抠时该如何选择。
先认识成品:透明处理支撑了什么
dsh-pet 的透明动画最终会在浏览器 overlay 或桌面透明置顶小窗中播放——宠物直接「站」在你的桌面上,没有边框、没有底色:
这套「无底色」体验的前提,就是素材链第 2 步(step02)产出的带 alpha 通道的透明 webm。而把绿幕视频变成透明视频,正是 dsh-pet 素材链中最具技术含量的一环——项目为此设计了双路线,按需二选一,且两条路线产出同一级step02/,后续步骤完全一致。
素材链全景:两条路线的交汇点
dsh-pet 把「AI 视频 → 桌面宠物」拆成了可复现的管线(见 README.md 的「从零生成你自己的宠物」章节):
video/*.mp4(绿幕源视频) → step01 水印填充(watermark_step01.py) → step02 绿幕抠像 ★ 双路线分岔处 ├─ 路线 A:chroma_step02.py 自动 HSV 抠像 └─ 路线 B:pr_import_step02.py PR 手工遮罩转码 → step03 归一化(normalize_step03.py,2160×1215 统一站立居中) → step04 转码 640×360 播放变体(encode_thumbs.py) → dsh-pet/assets/webm/(插件实际播放的素材)源视频来自 AI 视频生成工具,按 prompts/桌面宠物 10 秒动作提示词.md 的配方产出:16:9、纯绿幕(#00FF00)、人物头顶/脚底位置固定。step01 先用 scripts/watermark_step01.py 配合 video/watermark_mask_v5.mkv 遮罩把片尾水印用邻近像素填掉(核心取色逻辑在 scripts/fill_nn.py),为抠像铺路。
真正需要「二选一」的只有 step02。
路线 A:自动 HSV 抠像,一键出透明
scripts/chroma_step02.py 是默认路线:对step01/里的每个 mp4 自动完成绿幕去除,4 进程并行、支持断点续跑(已完成的文件自动 SKIP),全程无需人工介入。
为什么是 HSV,而不是传统 chromakey?
这是路线 A 最值得玩味的设计。脚本注释直接点破了原因(chroma_step02.py#L22-L29):
传统 chromakey(YUV 色度距离)和 RGB 色差阈值都是「以绿幕为中心画圈」——蓝色、白色等彩色可能落入圈内被误抠;而HSV 色相判定只认绿色方向,蓝/白/红永不误抠。
对桌面宠物来说这一点至关重要:宠物身上常有大面积蓝色头发、白色裙摆,「画圈式」抠像极易把这些像素误判为背景,抠出破洞。HSV 方案则只把「色相落在绿色区间 + 饱和度/明度达标」的像素判为背景,判定逻辑天然对主体安全。
核心参数一览:
| 参数 | 值 | 作用 |
|---|---|---|
GREEN_HUE_MIN/GREEN_HUE_MAX | 70° / 170° | 绿色色相判定区间 |
SAT_MIN/VAL_MIN | 0.15 / 0.15 | 饱和度/明度下界,白底浅色不算背景 |
HUE_FEATHER | 6° | 色相边界线性渐变,消除硬边 |
抠像主流程(chroma_step02.py#L146-L183)分三步:
- 采样背景色:
sample_background_color对帧的边缘区域(四周 1/10 留白内)抽样,按 8 级量化投票出最可能的绿幕色作为参考; - 逐帧判背景:RGB → HSV 向量化转换,落在绿色色相区间且饱和度、明度达标的像素置 alpha=0(透明),色相边界做 6° 线性渐变,让边缘柔和过渡;
- 透明编码:原始像素流经 ffmpeg 编码为
yuva420p的 VP9 透明 webm(CRF 30),alpha 通道真实写入文件。
路线 A 的边界在哪
自动抠像的前提是「背景确实是干净的绿幕」。当动作里出现与绿幕相近色的第三方物品(比如绿色零食、植物道具),或透明边缘复杂(半透明气泡、飘动的轻薄裙摆)时,色相区间判定会出现残边(绿边残留)或误抠(主体被穿透),此时就需要路线 B 出手。
路线 B:PR 手工遮罩,逐帧精修
scripts/pr_import_step02.py 的定位是「人工精修覆盖」——把 PR(Premiere Pro)里手工抠好的透明视频直接转码进 step02,覆盖该动作此前的自动抠像结果,其余动作仍走自动路线。
什么动作该选手工遮罩
脚本 docstring 给出了明确判据(pr_import_step02.py#L3-L17):
- 动作包含第三方物品(道具颜色接近绿幕、或物品本身半透明);
- 透明边缘复杂,HSV 区间判定无法干净分离主体与背景;
- 自动抠像产物出现残边或误抠,且调参救不回来。
这类动作在 dsh-pet 的动画库中占比不小:吃青团、吃粽子、堆雪人、放孔明灯……道具一多,「纯绿幕背景」的假设就守不住了。
手工遮罩的三步走
cd scripts # 1. 在 PR 中对该动作手工抠像(蒙版/跟踪),导出带 alpha 的透明 .mov # (推荐 ProRes 4444 with Alpha),文件名与动作名一致,如 吃汤圆.mov,放入 pr/ # 2. 转码覆盖:pr/*.mov → step02/*.webm(VP9 + yuva420p,CRF 32) python pr_import_step02.py # 3. 后续与路线 A 完全相同: python normalize_step03.py # 归一化 2160×1215 统一站立居中 python encode_thumbs.py # 转码 640×360 播放变体几个关键细节:
- mov 必须携带 alpha 通道(ProRes 4444 with Alpha 或 PNG 序列封装),ffmpeg 解码端才能读回透明,否则输出为不透明黑块;
- 转码命令(pr_import_step02.py#L51-L71)与路线 A 同源:
libvpx-vp9+yuva420p,保证两条路线产物在编码层面完全一致; - 转码后同样支持断点续跑校验(存在、够大、能被 ffprobe 读到视频流才算完成)。
双路线对比与选择依据
| 维度 | 路线 A:HSV 自动抠像 | 路线 B:PR 手工遮罩 |
|---|---|---|
| 入口脚本 | chroma_step02.py | pr_import_step02.py |
| 人工成本 | 零,一键全自动 | 需 PR 手工遮罩 + 导出 mov |
| 判定依据 | 色相 70°–170° + 饱和度/明度阈值 | 人工蒙版逐帧精修 |
| 适合场景 | 背景为干净绿幕的常规动作 | 含第三方物品 / 透明边缘复杂的动作 |
| 典型失败模式 | 残边、误抠(同色道具) | 耗时(人工逐帧) |
| 产物 | step02/*.webm(VP9 alpha) | step02/*.webm(VP9 alpha,覆盖同名) |
选择依据可以浓缩成一句话:默认全走路线 A;哪一段动作残边误抠救不回来,就只把那一段换成路线 B 覆盖——因为两条路线产出同一级step02/,单动作替换后normalize_step03.py与encode_thumbs.py原样照跑,整条素材链其余环节零改动。
共享后半程:归一化与转码
无论哪条路线,step02 之后都汇入同一条轨道,这也是「双路线可混用」的结构保证:
- step03 归一化:scripts/normalize_step03.py 读取各动画首尾站立帧,把人物统一缩放到站立高度 900px,在 2160×1215(16:9)透明画布上水平居中、脚底对齐——这一步正是双路线产物「同一宠物不同动作站在一起也不穿帮」的关键(normalize_step03.py#L85-L129);
- step04 转码:scripts/encode_thumbs.py 把母版压到 640×360(CRF 40),宠物实际播放只显示约 260px,体积从百 MB 级降到 ~10MB,才能进 npm 包发布。
桌面模式下,这些透明 webm 会在 Electron 透明置顶小窗中逐帧播放,配合余额动画、气泡与系统通知:
项目实战:为什么最终「全部手工」
了解机制后,一个有趣的事实:dsh-pet 官方素材实际上全部采用了路线 B——所有动作均在 PR 中手工抠像(见 README.md 中「本项目全部采用路线 B」的说明)。原因是主力角色动作密集、道具繁多,HSV 自动抠像在批量动作上的残边率难以接受,人工遮罩的精细度对最终观感是决定性的。
而 chroma_step02.py 被完整保留为自动化兜底:任何人 clone 仓库、拿到任意绿幕视频,都可以一键全自动复现透明动画——这正是一个可开源复现素材链应有的样子:精修走人工,量产走自动。
多开同屏时,不同「种类」的宠物(pet pack)共享这套素材链,各自动作独立成池:
小结:一张图记住选择逻辑
- 先跑自动:
watermark_step01.py→chroma_step02.py,干净绿幕的动作到此为止; - 看效果:播放 step02 产物,检查残边/误抠(alpha 校验思路可参考 scripts/check_alpha.py);
- 局部救场:救不回来的动作丢进 PR 手工遮罩,
pr_import_step02.py只覆盖那一个文件; - 统一收尾:
normalize_step03.py→encode_thumbs.py,双路线产物在此合流,无感切换。
自动 HSV 抠像负责「人人可复现」,PR 手工遮罩负责「观感上限」——两条路线各守其位,才撑起了 dsh-pet 上百个动画丝滑无缝的透明体验。
- AI 插件
- dsh-plugin
- 交互助手
- 桌面应用
【免费下载链接】dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI 视频自造专属宠物
相关推荐
掌握ImageSharp透明图像处理:从Alpha通道到高级遮罩技术完全指南
掌握ImageSharp透明图像处理:从Alpha通道到高级遮罩技术完全指南 ImageSharp是一个现代、跨平台的.NET 2D图形库,提供了强大的透明图像
图像处理图形学AltStore:为iOS设备开启应用自由之门的钥匙
AltStore:为iOS设备开启应用自由之门的钥匙 你是否曾想过,在不越狱的情况下也能为你的iPhone安装那些有趣的应用?当苹果的围墙花园限制了你的探索欲望
移动开发从黑箱到透明:Morphic项目模型选择策略的演进之路
从黑箱到透明:Morphic项目模型选择策略的演进之路 在AI驱动的问答引擎开发中,模型选择机制往往决定了系统的智能边界与用户体验。Morphic项目作为新一代
人工智能AI 应用搜索引擎前端后端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考