手势音量控制
Gesture Volume Control
📌 项目介绍
对着摄像头比个「捏合」手势:拇指与食指的距离远近,实时控制电脑音量大小。
流程简单直接——手部关键点距离 → 映射音量区间 → 调用系统音量接口。它是手势追踪从「看」到「控」的桥梁项目,也是交互式应用的标准范例。
🧰 环境与物料
- 电脑 + 摄像头
- Python 3.7+ 环境
- pip 安装:opencv-python、mediapipe、cvzone、pycaw(Windows 音量控制)
- (可选)外接扬声器方便试听
🔧 步骤拆解
1
安装依赖
Windows 用 pycaw 控制音量,macOS 可用 osascript 替代
先测试音量接口能否正常调节
2
检测手部关键点
用 HandTrackingModule 获取拇指与食指指尖坐标
绘制两点之间的连线与距离文字
3
计算距离
用欧氏距离公式计算两指间距(像素)
画面远近变化会影响绝对值,先做归一化
4
映射到音量区间
把像素距离线性映射到音量 0~100
用 numpy 的 clip/interp 处理边界
5
调节系统音量
把映射值写入系统音量接口
音量条实时绘制在画面上,反馈直观
6
平滑与收尾
对音量值做平滑滤波,避免跳动
整理成可复用的音量控制函数
💡 要点提示
- 手距离摄像头越远,同样动作的距离变化越小,建议手离镜头 30~60cm
- 音量的最小步进可设 1~2,防止细微抖动导致音量乱跳
- 跨平台时封装音量接口,Windows/macOS/Linux 各写一个实现