mcpField
V
video-stickfigure

video-stickfigure

github.com/zrt-ai-lab创意与媒体29649 次安装14 周前更新
代码仓库

关于 video-stickfigure

video-stickfigure 是用于制作视频场景火柴人图片的技能,要求使用 AI 生图,再通过 HSV 处理统一背景。它规定了提示词模板、画面检查、文件命名和交付标准。

主要功能

  1. 01AI 生成火柴人图片
  2. 02两种背景的提示词模板
  3. 03与情绪匹配的场景元素
  4. 04HSV 背景色统一处理
  5. 05图片检查与输出命名

适用场景

  1. 01制作一组火柴人场景图片
  2. 02统一黑板风格背景颜色
  3. 03检查图片质量与场景数量
  4. 04为后续视频流程准备统一图片

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/zrt-ai-lab/opencode-skills --skill video-stickfigure

安装后在 Claude Code 中输入/video-stickfigure确认已加载。

附带文件README.md

详细介绍

来自项目 README

火柴人生图技能

🚨 核心原则

必须使用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必须加氛围元素

评论

支持 Markdown