基于tensorflow的手势检测和手势识别分类

项目目的:在手机端实现用户手势的检测并且识别用户所做的手势

遇到的问题:

首先在手部检测的解决办法中,我尝试过用opencv进行手部识别,但存在的问题是背景对手的识别的影响太大,如果采用颜色进行手和背景的区分的话,又会受到光照等影响,总体而言效果不好。

之后转向使用机器学习方法进行识别。

在寻找可用的手部检测的代码中花了很长时间,试了几个github上的项目因为种种问题不能运行。

考虑过使用openpose框架进行手部的识别,虽然准确度高但是很吃GPU,所以希望寻找对性能要求低的模型进行改进。

最终在  这里  找到了通过卷积神经网络训练后的可用的手识别的项目。

下面是改编和使用该项目,并且在其基础上进行手势分类的过程:

一.对 这里 项目进行的改进

1.首先由于要取识别出来的手部图片进行图片分类操作,先将 config.py 文件中的 DEMO_TYPE 设置为

DEMO_TYPE = 'MULTI'

就可以显示出如图图片

2.接着将上图的左右两个图片的输出改为单一图片输出

在 run_demo_hand_with_tracker.py 中 将main方法中 if ('multi')分支中的imshow语句更改为

cv2.imshow('local_img', local_img.astype(np.uint8))

即取消了list的合并

3.运行run_demo_hand_with_tracker.py,保存当前手势图片

在上述imshow方法下面加上保存图片的语句

cv2.imwrite('你的路径'+'.jpg', local_img.astype(np.uint8), [int(cv2.IMWRITE_JPEG_QUALITY), 90])

即可在输出文件夹中得到类似下面的图片集

4.自行录入多种手势进行训练

在这里我录入了6种手势

每种手势600多张,一共4038张的图片作为数据集进行手势分类的训练

数据集被我保存在项目目录下的 classify -- handGesturePic目录下,共6个子目录

二.对上述数据集进行分类操作

1.搭建cnn网络

学习参考 点击打开链接 这篇博客的花图片的分类

具体实现代码  classmain.py :

# -*- coding: utf-8 -*-
from skimage import io, transform
import glob
import os
import tensorflow as tf
import numpy as np
import time

path = './handGesturePic/'
# 模型保存地址
model_path='./modelSave/model.ckpt'

# 将所有的图片resize成100*100
w = 100
h = 100
c = 3


# 读取图片
def read_img(path):
    cate = [path + '/' + x for x in os.listdir(path) if os.path.isdir(path + '/' + x)]
    imgs = []
    labels = []
    for idx, folder in enumerate(cate):
        print('reading the images:%s' % (folder))
        for im in glob.glob(folder + '/*.jpg'):
            img = io.imread(im)
            img =
  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值