littlebot
Published on 2025-04-12 / 3 Visits
0

【源码】基于OpenCV和神经网络的手势识别系统

项目简介

本项目运用OpenCV提取手势数据,借助神经网络训练出手势模型,把训练好的模型加载到手势识别程序中,从而实现对手势命令的获取,能够有效识别不同手势。

项目的主要特性和功能

  1. 数据采集:利用OpenCV提取手势相关数据,可修改色彩空间范围和图片存储路径,在合适时机按指定按键获取手势Hu矩数据及其他数据。
  2. 数据处理:将获取的数据按等量原则处理并做好标签,为模型训练做准备。
  3. 模型训练:使用神经网络算法,可修改训练数据表路径、超参数和训练手势目标模型索引键,训练出手势识别模型。
  4. 手势识别:加载训练好的模型,通过摄像头捕获手势图像,识别出对应的手势,并以图像形式展示识别结果。

安装使用步骤

第一步:获取手势Hu矩数据和几个其他数据

  1. 打开get_test.py,将获取手势图片存储路径修改为自己的文件目录路径。
  2. 修改get_yCrCb_mask2()函数中的色彩空间范围,保证背景干净、与肤色区别明显且光线良好。
  3. 运行程序,在合适时机按下Tab键获取数据,获取足够数据量后按Esc两次退出程序。
  4. 将打印数据存入自己建立的各个手势文档(一个手势约500个数据)。

第二步:数据处理

把获取的数据按等量原则放入hands_elements_data_all.csv表中并做好标签,再将每个要训练的手势模型作为正样本,其他模型为负样本,按正负等量原则将数据放入hands_elements_data.csv表中并做好标签。

第三步:模型训练

  1. 打开hands_learning.py,修改导入训练数据表所在路径。
  2. 视情况修改训练超参数,如学习率、学习轮数、训练集和测试集数据个数。
  3. 修改训练手势目标模型索引键。
  4. 开始运行程序,记录最开始打印出的极限数据。

第四步:使用模型

  1. 打开result.py,修改参数。
  2. 拍摄手势对应照片(修改大小),包括各个手势、脸和一张空白图片,将图片放于指定路径,并将程序中全部图片存放路径都改为自己设置的路径。
  3. 修改模型内容,包括判断轮的帧数、模型数量及参数。
  4. moudle_detect_result_eight()函数的模型参数极限值修改为训练时记录的值。
  5. 修改def get_yCrCb_mask2(image)函数色彩空间,与手势数据获取时的色彩空间相同。
  6. 运行程序,最多会出现三个窗口,分别代表脸部、左手、右手,识别到对应手势或脸部或无时,各个窗口会对应弹出识别结果图片。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】