Skip to main content

ui-extractor

从静态图片中提取前景元素并分离 UI 组件,支持棋盘格背景去除、绿幕/蓝幕/白幕/黑幕关键色抠图、透视校正。当用户说"提取 UI 元素"、"分离组件"、"去除背景"、"棋盘格背景"、"绿幕抠图"、"checkerboard 抠图"、"抠图"时使用。

설치로 이동

소스 정보

저장소
zrong/skills
최근 소스 활동
2026년 6월 16일 13:50
감지된 SKILL.md 언어
중국어
스타
12
포크
4

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
17 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
ui-extractor
description
从静态图片中提取前景元素并分离 UI 组件,支持棋盘格背景去除、绿幕/蓝幕/白幕/黑幕关键色抠图、透视校正。当用户说"提取 UI 元素"、"分离组件"、"去除背景"、"棋盘格背景"、"绿幕抠图"、"checkerboard 抠图"、"抠图"时使用。
# UI Extractor 从静态图片中自动识别背景类型(棋盘格 / 关键色),去除背景,分离独立的 UI 组件,输出透明 PNG。 ## 触发场景 - 需要从带棋盘格背景的 UI 设计图中提取组件 - 需要从绿幕/蓝幕/白幕/黑幕拍摄图中抠出主体 - 需要将 UI 套件拆分为独立的组件图片 - 需要校正倾斜拍摄的棋盘格图片 ## 工作流程 1. **确认图片路径**:用户提供带背景的图片路径。 2. **确认需求**:背景类型(auto/chroma/checkerboard)、是否分离元素、是否做透视校正。如果 `$ARGUMENTS` 非空,解析其中的参数。 3. **执行处理**: ```bash cd scripts && uv run ui_extractor.py --input <图片路径> [选项] ``` ### 参数 | 参数 | 默认值 | 说明 | |------|--------|------| | `--input` / `-i` | (必填) | 输入图片路径 | | `--output-dir` / `-o` | 输入同目录 | 输出目录 | | `--bg-type` | `auto` | 背景类型: `auto` / `chroma` / `checkerboard` | | `--bg-color` | `auto` | chroma 模式背景色: `auto` / `green` / `blue` / `white` / `black` | | `--pattern-size` | `9 6` | 棋盘格内角点 (cols rows) | | `--min-element-area` | `500` | 元素最小面积(像素²) | | `--no-extract` | `false` | 只去背景,不分离元素 | | `--warp` | `false` | 启用透视校正(仅 checkerboard 模式) | | `--debug` | `false` | 输出调试图(mask/标注) | | `--non-interactive` | `false` | 强制非交互模式 | ### 示例 ```bash # 自动检测背景类型 uv run ui_extractor.py --input ui-design.png # 明确指定绿幕背景 uv run ui_extractor.py --input photo.jpg --bg-type chroma --bg-color green # 只去背景不分离元素 uv run ui_extractor.py --input photo.jpg --no-extract # 棋盘格 + 透视校正 uv run ui_extractor.py --input tilted.png --bg-type checkerboard --warp # 调试模式 uv run ui_extractor.py --input photo.jpg --debug ``` 4. **展示结果**:告知用户输出目录,并展示分离的 UI 组件。 ## 输出文件 ``` <output-dir>/ ├── <name>-nobg.png # 去背景后的完整图(BGRA) ├── <name>-warped.png # 透视校正后的图(--warp) ├── elements/ │ ├── element_01.png # 分离的每个 UI 元素 │ ├── element_02.png │ └── ... ├── metadata.json # 元素元数据(bbox、面积、坐标等) ├── summary.txt # 处理摘要 └── debug/ # --debug 模式输出 ├── mask_overlay.png ├── foreground_mask.png ├── corners.png └── elements_annotated.png ``` ## 注意事项 - **自动检测**:默认 `--bg-type auto` 会尝试从四角像素和棋盘格角点检测背景类型 - **chroma 算法**:直接复制自 spritesheet skill 的 `chroma.py`(2026-06-16),保持与视频抠图结果一致 - **棋盘格检测**:优先用 `findChessboardCornersSB`(OpenCV 4.5+),失败时回退到基于局部方差的纹理检测 - **透视校正**:要求棋盘格完整可见,否则跳过并警告 - **元素分离**:基于 `findContours(RETR_EXTERNAL)`,按面积/长宽比过滤,小于 `--min-element-area` 的元素会被丢弃 ## 背景色建议 | 背景类型 | 色值 | 抠图效果 | |----------|------|----------| | 🟢 绿幕(推荐) | `#00FF00` / `RGB(0,255,0)` | ✅ 最佳 | | 🔵 蓝幕 | `#0000FF` / `RGB(0,0,255)` | ✅ 好 | | ⚪ 白幕 | `#FFFFFF` | ⚠️ 边缘易混淆 | | ⚫ 黑幕 | `#000000` | ⚠️ 暗部易丢失 | | 🔲 棋盘格 | 灰白/深灰相间 | ✅ 几何精确 | ## 算法细节 详细的算法流程和参数说明见 [references/pipeline.md](references/pipeline.md)。
GitHub에서 보기