AI 虚拟画家
AI Virtual Painter
📌 项目介绍
在空中挥动指尖实时作画:抬起食指在画面中移动就能画出轨迹,伸出的手指数量切换画笔颜色,握拳等手势可以清空画布。
在手势追踪的基础上加入了画布状态管理(画/不画/清空),是理解「手势状态机」的最佳入门项目。
🧰 环境与物料
- 电脑 + 摄像头
- Python 3.7+ 环境
- pip 安装:opencv-python、mediapipe、cvzone
- (可选)大屏显示器,作画体验更佳
🔧 步骤拆解
1
手势检测基础
用 HandTrackingModule 拿到 21 个关键点
区分食指、中指、无名指的指尖坐标
2
设计画布
用 numpy 生成全黑画布,与摄像头画面叠加
画布尺寸与画面一致,便于坐标对齐
3
判定绘制状态
只伸食指 = 绘制模式,记录指尖轨迹
食指+中指同时伸出 = 不画(移动模式)
4
画线
上一帧指尖到当前帧指尖用 cv2.line 连线
轨迹连续、手感自然
5
颜色切换
伸出 3~4 根手指在顶部色块区点选颜色
把颜色切换做成「伸指+停留在色块」的交互
6
清空画布
设定一个手势(如握拳)触发重绘画布
整理代码为可复用的画板函数
💡 要点提示
- 绘制前先验证指尖坐标与画面坐标一致,避免错位作画
- 画布用 uint8 数组并做颜色渐变,视觉体验更好
- 手势状态判定要加小延时去抖,快速变化手指会闪烁