video-stickfigure

v2026.09.24

火柴人图片生成技能。使用AI生成粉笔画风格火柴人,并用HSV统一背景色。当需要生成火柴人视频素材时触发。

GitHub
安装命令
npx skhub add zrt-ai-lab/video-stickfigure
Markdown
SKILL.md

火柴人生图技能

🚨 核心原则

必须使用AI生图!禁止用PIL画线条!

检查标准:生成的图片文件 > 50KB


🔧 生图工具

使用 image-service skill:

python ~/.openclaw/skills/image-service/scripts/text_to_image.py "[prompt]" -r 9:16 -o stick1.png

📝 Prompt模板

深墨绿背景版(推荐·默认)

minimalist chalk-style stick figure on dark green chalkboard background #3c5b45,
white chalk line art, simple 5-stroke drawing style,
[动作描述],
exaggerated pose, hand-drawn feel, chalk texture,
no shading, no gradient, stark contrast,
vertical composition 9:16, no text, no watermark

纯黑背景版(备选)

minimalist stick figure, pure black background #000000,
white line art only, simple 5-stroke drawing,
[动作描述],
exaggerated pose, no shading, no gradient, no gray,
stark contrast, cartoon style,
vertical composition 9:16, no text, no watermark

选择建议:

  • 深墨绿版:有黑板质感,视觉更柔和 ✅ 推荐
  • 纯黑版:对比度更高,更简洁

动作描述 + 氛围元素(必须包含!)

火柴人不能孤零零的!必须加氛围元素来衬托情绪!

情绪/概念人物动作🌟 氛围元素(必加!)
衰老/疲惫person slumped over, tired posture+ withered leaves falling, dim shadows, cracked ground
枯萎/消沉person wilting like a dying plant+ dead tree nearby, falling petals, dark clouds
向上/成长person climbing stairs upward+ sunlight rays from above, distant mountain peak, stars
扛事/承担person lifting heavy weight overhead+ storm clouds, rain drops, lightning in background
看远/远眺person standing on cliff, hand over eyes+ vast horizon, clouds below feet, sunrise glow
容人/包容person with arms wide open+ small figures approaching, warm light rays, hearts floating
愉悦/快乐person jumping with joy, arms raised+ confetti, sparkles, fireworks in sky
成长/蜕变person breaking out of shell+ butterfly wings emerging, light beams, blooming flowers
思考/沉思person sitting cross-legged, hand on chin+ floating question marks, gears, light bulb above head
行动/奔跑person running forward with determination+ motion lines, wind effect, path stretching ahead

Prompt组装公式

[基础模板] + [人物动作] + [氛围元素] + [后缀]

示例:衰老场景

minimalist chalk-style stick figure on dark green chalkboard background #3c5b45,
white chalk line art, simple 5-stroke drawing style,
person slumped over tired posture aging feeling,
withered leaves falling around, dim shadows, cracked ground beneath,
exaggerated pose, hand-drawn feel, chalk texture,
no shading, no gradient, stark contrast,
vertical composition 9:16, no text, no watermark

示例:爬台阶场景

minimalist chalk-style stick figure on dark green chalkboard background #3c5b45,
white chalk line art, simple 5-stroke drawing style,
person climbing stairs upward with determination,
sunlight rays streaming from above, distant mountain peak visible, glowing stars,
exaggerated pose, hand-drawn feel, chalk texture,
no shading, no gradient, stark contrast,
vertical composition 9:16, no text, no watermark

⚠️ 氛围元素规则

  1. 必须添加 - 不加氛围元素的火柴人图太单调
  2. 与情绪匹配 - 消极情绪用暗元素,积极情绪用亮元素
  3. 不要太多 - 2-3个氛围元素足够,太多会杂乱
  4. 保持简约 - 氛围元素也是粉笔画风格,不要写实

🎨 HSV背景统一处理(必做!)

AI无法精确控制颜色!生图后必须用代码统一背景色!

处理脚本

import cv2
import numpy as np

def unify_background_hsv(input_path, output_path, target_hex="#3c5b45"):
    """
    用HSV范围替换统一背景色
    """
    img = cv2.imread(input_path)
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    
    # 绿色系HSV范围(覆盖AI生成的各种绿色)
    lower = np.array([35, 20, 20])
    upper = np.array([85, 255, 255])
    
    # 创建掩码
    mask = cv2.inRange(hsv, lower, upper)
    
    # 目标颜色 BGR
    target_bgr = tuple(int(target_hex.lstrip('#')[i:i+2], 16) for i in (4, 2, 0))
    
    # 替换背景
    result = img.copy()
    result[mask > 0] = target_bgr
    
    cv2.imwrite(output_path, result)
    return output_path

# 批量处理
import glob
for f in glob.glob("stick*.png"):
    if "_unified" not in f:
        out = f.replace(".png", "_unified.png")
        unify_background_hsv(f, out)
        print(f"处理完成: {out}")

命令行版本

python3 << 'EOF'
import cv2
import numpy as np
import glob
import sys

target_hex = "#3c5b45"
target_bgr = tuple(int(target_hex.lstrip('#')[i:i+2], 16) for i in (4, 2, 0))

for f in glob.glob("stick*.png"):
    if "_unified" in f:
        continue
    img = cv2.imread(f)
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    mask = cv2.inRange(hsv, np.array([35,20,20]), np.array([85,255,255]))
    result = img.copy()
    result[mask > 0] = target_bgr
    out = f.replace(".png", "_unified.png")
    cv2.imwrite(out, result)
    print(f"✅ {f} -> {out}")
EOF

✅ 检查清单(必须全部通过!)

在交付图片前,必须确认:

检查项标准不通过则
文件大小每张 > 50KB重新AI生图
图片数量与场景数量一致补充生成
背景颜色统一为 #3c5b45执行HSV处理
火柴人可见白色线条清晰重新生成
# 快速检查文件大小
ls -la stick*_unified.png | awk '{if($5<50000) print "❌ "$9" 太小: "$5"B"; else print "✅ "$9": "$5"B"}'

📁 输出规范

文件说明
stick1.png, stick2.png, ...AI生成的原始图片
stick1_unified.png, ...HSV处理后的统一背景图片

后续流程只使用 *_unified.png 文件!


🚫 常见错误

错误后果正确做法
用PIL画线条视频看起来像测试图用image-service AI生图
跳过HSV处理背景色深浅不一必须执行HSV统一
文件<50KB图片质量差重新生成
用原图不用unified背景不统一只用_unified.png
火柴人没有氛围元素画面单调无感染力prompt必须加氛围元素
发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

未指定

源路径

video-stickfigure

默认分支

main

最新提交

d38536f

Tree SHA

299bc00