用opencv和pytorch实现简单手势识别的步骤

第八周 2018.09.02-2018.09.08

完成一个手势识别的工程,这是最终的结果。

 

也就是打开摄像头,把自己的手势出现在黑框中,然后按下空格键就可以预测手势是什么。一共可以识别五种手势{✋,?,?,✌,?}。

下面实现的步骤:

首先是数据的收集。

用摄像头来收集数据,使用opencv打开摄像头,在屏幕某个位置画一个黑框,把手势放进去,然后按下空格键,就可以保存一张图片到本地中,每种手势收集了大概1000多一点张图片,一共6039张图片。由于处理rgb图像复杂度太高,所以对获取到的图片进一步处理,压缩和二值化,这样最终需要CNN处理的图片的大小就是1通道,宽48,高64的图片。每个图片都放在单独的文件夹来代表不同的类别。

第二步是处理成PyTorch可以处理的Tensor。

    使用os,opencv模块从本地读取所有的图片,把标签和图片作为一个元组,方便统一进行打乱顺序。整个数据集就是,图片个数*(图片数据+图片标签)。打乱之后前5000个做为训练集,后1039个做为测试集。在转化成Tensor,打包成批次等等。

第三步是网络结构的设计。

CNN网络的结构,两个卷积层,两个全连接层。输出5个节点,代表5个类别。然后进行网络的训练和测试,一开始发现预测结果全都是同一类,然后学习率调成原来的十分之一之后,训练正常,最后在测试集上实现了0loss,百分之百的准确率。

第四步是模型的使用。

    由于每一步都输出了准确率和loss,也保存了整个网络。所以可以选择损失和loss最小的一个迭代保存的网络进行使用。加载保存到本地的模型文件,然后再和之前收集数据类似的步骤,把摄像头标定的黑框中的数据处理送进网络里进行预测,打印出预测结果。虽然收集数据的时候是使用的灰度图,但是进行使用的时候用户界面仍然可以是rgb图像。

手势识别是一种计算机视觉技术,通过识别人类手部动作和手指姿势来实现交互。目前,使用CNN(卷积神经网络)和OpenCV是一种常见的手势识别方法。 CNN是一种结构化的深度学习网络,特别适用于图像处理任务。它可以自动从大量的图像数据中学习特征,并用于分类和识别。在手势识别中,可以使用CNN来学习和识别不同手势的特征。 OpenCV是一个开源的计算机视觉库,提供了丰富的图像处理和分析功能。它支持图像的读取、预处理、特征提取等操作,并且可以与CNN结合使用。 实现手势识别的基本步骤如下: 1. 数据收集:收集手势图像数据集,包括不同手势的正负样本。 2. 数据预处理:使用OpenCV对图像数据进行预处理,包括调整图像大小、灰度化等操作,以便于后续的特征提取和训练。 3. 特征提取:使用CNN模型对预处理后的图像进行特征提取。CNN会自动学习图像中的特征,如边缘、纹理等,并将其表示为高维特征向量。 4. 训练模型:将提取的特征向量与手势标签一起作为训练数据,使用CNN进行模型训练。可以使用深度学习框架如TensorFlow或PyTorch进行模型训练。 5. 手势识别:使用训练好的CNN模型对新的手势图像进行识别。将图像输入CNN模型,通过前向传播得到输出结果,即手势的类别标签。 通过CNN和OpenCV进行手势识别可以实现较高的准确率和鲁棒性。随着深度学习技术的不断发展,手势识别的应用领域也在不断扩展,如智能家居、虚拟现实等。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

York1996

您的打赏,是我更新的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值