# 手势识别 **Repository Path**: kz_y/hand_gesture ## Basic Information - **Project Name**: 手势识别 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-01 - **Last Updated**: 2025-11-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于YOLO、TensorFlow与OpenCV的实时手势识别与虚拟绘图系统 ## 项目概述 本项目开发了一个实时手势识别与虚拟绘图系统,通过摄像头捕获视频流,利用YOLO模型检测手部区域,使用TensorFlow CNN模型对裁剪出的手部图像进行静态手势分类,并根据识别出的手势在虚拟画布上实现绘图、移动、清空等交互功能。 ## 技术栈 - **YOLOv8** (ultralytics库):用于实时手部目标检测 - **TensorFlow/Keras**:用于构建和运行静态手势分类的卷积神经网络(CNN) - **OpenCV-Python**:用于视频流捕获、图像处理、绘制虚拟画布及最终可视化 - **NumPy**:用于数值计算和数据处理 ## 功能特性 ### 手势识别功能 - 实时手部检测与跟踪 - 静态手势分类(食指、握拳、手掌等) - 动态手势判断(点击、滑动) ### 虚拟绘图功能 - **食指手势**:开始/继续绘图 - **握拳手势**:停止绘图 - **手掌手势**:清空画布 - **连续食指(不动)**:切换画笔颜色 - **手掌滑动**:清空画布 ### 交互控制 - 支持多种画笔颜色切换 - 实时显示手势识别结果和置信度 - 可视化手部检测框和中心点 ## 项目结构 ``` hand_gesture/ ├── main.py # 主程序 - 实时手势识别与虚拟绘图系统 ├── requirements.txt # Python依赖包列表 ├── README.md # 项目说明文档 ├── .gitignore # Git忽略文件配置 ├── models/ # 模型文件目录 │ ├── gesture_classifier_best.h5 # 最佳手势分类模型 │ ├── gesture_classifier_final.h5 # 最终手势分类模型 │ ├── class_mapping.json # 手势类别映射 │ └── yolov8n.pt # YOLO手部检测模型 ├── scripts/ # 脚本文件目录 │ ├── preprocess_data.py # 数据预处理脚本 │ ├── train_gesture_model.py # 模型训练脚本 │ └── setup_environment.py # 环境设置脚本 ├── docs/ # 文档和图表目录 │ ├── training_history.png # 训练历史图表 │ ├── confusion_matrix.png # 混淆矩阵图表 │ ├── dataset_samples.png # 数据集样本图表 │ └── PROJECT_STRUCTURE.md # 项目结构说明文档 └── data/ # 数据目录 ├── raw/ # 原始数据 ├── processed/ # 处理后的数据 └── .gitignore # 数据目录Git忽略配置 ``` 详细的项目结构说明请参考 `docs/PROJECT_STRUCTURE.md` ## 安装与运行 ### 1. 环境准备 运行环境设置脚本安装所有必要的依赖: ```bash python setup_environment.py ``` 或者手动安装依赖: ```bash pip install -r requirements.txt ``` ### 2. 数据预处理 确保数据位于 `data/raw/` 目录下,数据集结构应为: ``` data/raw/ ├── user01/ │ ├── gesture01/ │ │ ├── image001.jpg │ │ └── ... │ ├── gesture02/ │ └── ... ├── user02/ └── ... ``` 运行数据预处理: ```bash python scripts/preprocess_data.py ``` ### 3. 模型训练 训练手势分类模型: ```bash python scripts/train_gesture_model.py ``` ### 4. 运行系统 启动实时手势识别系统: ```bash python main.py ``` ## 使用说明 ### 手势操作指南 1. **开始绘图**:做出食指手势并移动手部 2. **停止绘图**:做出握拳手势 3. **清空画布**:做出手掌手势并滑动 4. **切换颜色**:保持食指手势不动连续5帧 5. **退出程序**:按 'q' 键 ### 键盘快捷键 - **q**:退出程序 - **c**:手动清空画布 - **r**:重置画笔颜色 ## 系统架构 ### 数据处理流程 1. **视频输入**:摄像头实时捕获视频流 2. **手部检测**:YOLO模型检测手部区域 3. **手势分类**:TensorFlow模型分类静态手势 4. **动态手势判断**:基于连续帧的状态机判断 5. **绘图交互**:根据手势执行相应绘图操作 6. **可视化输出**:实时显示识别结果和虚拟画布 ### 模型架构 - **基础模型**:MobileNetV2(预训练权重) - **自定义顶层**:全局平均池化 + 128神经元全连接层 + Softmax输出层 - **输入尺寸**:224×224×3 - **输出类别**:根据数据集的手势类别数量 ## 性能优化 ### 实时性能 - 使用轻量级MobileNetV2作为基础模型 - 优化图像预处理流程 - 多线程处理检测和分类任务 ### 准确率提升 - 数据增强技术 - 迁移学习策略 - 早停法和学习率调整 ## 扩展功能 ### 可扩展的手势库 系统支持添加新的手势类别,只需: 1. 在数据集中添加新的手势类别文件夹 2. 重新训练模型 3. 在主程序中添加对应的手势处理逻辑 ### 自定义绘图功能 可以扩展绘图功能,支持: - 不同画笔粗细 - 更多绘图工具(圆形、矩形等) - 手势控制的选择和移动操作 ## 故障排除 ### 常见问题 1. **摄像头无法打开** - 检查摄像头权限 - 确保没有其他程序占用摄像头 2. **模型加载失败** - 确保已运行训练脚本生成模型文件 - 检查模型文件路径是否正确 3. **手势识别不准确** - 确保手部在摄像头视野内 - 调整手部与摄像头的距离 - 检查光照条件 ### 性能调优 - 降低摄像头分辨率以提高帧率 - 调整YOLO检测置信度阈值 - 优化模型推理批次大小 ## 贡献指南 欢迎贡献代码和提出改进建议! ## 许可证 本项目采用MIT许可证。 ## 联系方式 如有问题或建议,请联系项目维护者。