# Blur Faces

> 写真に写っている人物の顔を検出してぼかし、匿名化した画像を作成する。YuNet による 2 パス顔検出、ガウスぼかし、拡大クロップでの目視検証、取りこぼしの手動追いぼかしまでのワークフロー。「顔をぼかして」「顔にモザイク」「写真の顔を隠して」「人物を匿名化して」などのリクエストで使用する。

- Skill: `schroneko/blur-faces` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add schroneko/blur-faces`
- Raw SKILL.md: https://api.skillmd.com/api/skills/schroneko/blur-faces/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: schroneko (https://skillmd.com/u/schroneko)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/schroneko/blur-faces

---


# Blur Faces

写真内の顔を OpenCV の YuNet で検出してガウスぼかしをかける。群衆写真では自動検出だけだと必ず取りこぼしが出るため、目視検証と手動追いぼかしまでを 1 セットのワークフローとして実行する。

## ワークフロー

### 1. 自動検出とぼかし

```bash
uv run --with opencv-python-headless python scripts/blur_faces.py 入力画像 出力画像
```

- 元画像は上書きせず、`元ファイル名-blurred.jpg` のような別名で出力する
- YuNet モデルは初回実行時に `~/.cache/blur-faces/` へ自動ダウンロードされる
- 等倍（しきい値 0.35）と 2 倍拡大（しきい値 0.4）の 2 パスで検出し、小さい顔や斜めの顔を拾う

### 2. 目視検証（必須）

出力画像全体を Read で確認したうえで、人物が密集している領域を拡大クロップして取りこぼしを探す。

```bash
uv run --with opencv-python-headless python scripts/crop_zoom.py 出力画像 crop1.jpg X0,Y0,X1,Y1
```

- クロップは重なりを持たせて複数領域を切り出し、それぞれ Read で確認する
- 見落としやすいもの: 横顔、下を向いた顔、マスク着用、眼鏡、画像端で見切れた顔、壇上や後方の小さい顔

### 3. 取りこぼしの手動追いぼかし

見つけた未処理の顔は、元画像のピクセル座標で `--manual X,Y,W,H` を追加して再実行する（複数指定可）。

```bash
uv run --with opencv-python-headless python scripts/blur_faces.py 入力画像 出力画像 --manual 140,1055,70,75 --manual 1290,1180,90,95
```

- クロップ画像上の座標は「クロップ座標 ÷ ズーム倍率 ＋ クロップ原点」で元画像座標へ戻す
- 再実行後、ステップ 2 の検証を繰り返し、取りこぼしゼロを確認してから完了とする

## オプション

| オプション         | 説明                                   | デフォルト                                              |
| ------------------ | -------------------------------------- | ------------------------------------------------------- |
| `--manual X,Y,W,H` | 手動ぼかしボックスの追加（複数指定可） | なし                                                    |
| `--pad`            | 検出ボックスの拡張率                   | 0.25                                                    |
| `--model`          | YuNet ONNX モデルのパス                | `~/.cache/blur-faces/face_detection_yunet_2023mar.onnx` |
| `--zoom`           | crop_zoom.py の拡大倍率                | 2                                                       |

## 注意事項

- macOS の Vision framework（VNDetectFaceRectanglesRequest）は正面顔向けで、下を向いた顔や横顔が多い会場写真ではほとんど検出できない。この用途では YuNet を使う
- YuNet でもマスク着用や強い横顔は落とすことがあるため、目視検証を省略しない
- ぼかし強度はボックス幅に比例したカーネルで自動調整される
- 出力が JPEG の場合は品質 92 で保存される

