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

2023-10-27

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

遇到的问题:

首先在手部检测的解决办法中,我尝试过用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' 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于tensorflow的手势检测和手势识别分类 的相关文章

  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • 张量流服务错误:参数无效:JSON 对象:没有命名输入

    我正在尝试使用 Amazon Sagemaker 训练模型 并且希望使用 Tensorflow 服务来为其提供服务 为了实现这一目标 我将模型下载到 Tensorflow 服务 docker 并尝试从那里提供服务 Sagemaker 的训练
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • 是否可以在 PyScript 中使用 OpenCV 模块?

    我想使用 opencv 模块 但无法导入 OpenCV 那么我该如何解决这个问题呢 顺便说一句 Pyodide 支持 OpenCV 示例代码 https i stack imgur com ahwex jpg 尚不支持 OpenCV 此时O
  • 如何在 cv2.VideoWriter 中使用 FPS 参数?

    好的 所以我正在制作视频 我想确切地知道如何使用 FPS 参数 它是一个浮点数 所以我假设这是我想要的每帧之间的间隔 你能给个例子吗 我只想知道视频会如何随着 FPS 参数值的变化而变化 因为我制作的视频现在太快了 谢谢 确实只是这样 fr
  • 如何使用 Tensorflow-GPU 和 Keras 修复低易失性 GPU-Util?

    我有一台 4 GPU 机器 在上面运行带有 Keras 的 Tensorflow GPU 我的一些分类问题需要几个小时才能完成 nvidia smi returns Volatile GPU Util which never exceeds
  • 在 Visual Studio C++ 2008 中包含 dll

    有没有办法将 dll 包含在项目中 这样我就不必在编译后将这些 dll 与可执行文件放在同一文件夹中 这样我就可以用它们编译我的项目 这是否有可能 如果是 有人可以指导我 我的项目是一个 opencv 项目 有很多 dll 我必须包含在文件
  • Keras model.predict 函数给出输入形状错误

    我已经在 Tensorflow 中实现了通用句子编码器 现在我正在尝试预测句子的类概率 我也将字符串转换为数组 Code if model model type universal classifier basic class probs
  • VideoCapture.read() 返回过去的图像

    我在跑python3 6 with openCV on the Raspberry pi OS is Raspbian 代码的大致结构如下 The image以时间间隔 3 5 分钟 捕获 被捕获image在函数中处理并返回度量 精度的种类
  • 在 Tensorflow tf.nn.nce_loss 中出现 TypeError:'Mul' Op 的输入 'y' 的类型为 float32,与参数 'x' 的 int32 类型不匹配

    我正在研究 Tensor Flow 中的 Bag of Words 实现 并得到了 类型错误 Mul Op 的输入 y 的类型为 float32 与参数 x 的 int32 类型不匹配 在 tf nn nce loss 中 我尝试查看 tf
  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • 在张量流的卷积层中使用自定义过滤器

    我一直在从各种教程中学习 Tensorflow 并且想知道是否可以定义一个自定义过滤器供卷积网络使用 例如 如果我知道特征中有有意义的结构 使得每个其他特征都是相关的 我想定义一个看起来像 0 1 0 1 0 1 的过滤器 tf nn co
  • 从扫描文档中提取行表 opencv python

    我想从扫描的表中提取信息并将其存储为 csv 现在我的表提取算法执行以下步骤 应用倾斜校正 应用高斯滤波器进行去噪 使用 Otsu 阈值进行二值化 进行形态学开局 Canny 边缘检测 进行霍夫变换以获得表格行 去除重复行 10像素范围内相
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • AttributeError:模块“tensorflow.python.summary.summary”没有属性“FileWriter”

    我收到此错误 尽管我到处都看过file writer tf summary FileWriter path to logs sess graph 被提到为正确的实施this https github com tensorflow tenso
  • 如何使用 AdaBoost 进行特征选择?

    我想使用 AdaBoost 从大量 100k 中选择一组好的特征 AdaBoost 的工作原理是迭代功能集并根据功能的执行情况添加功能 它选择对现有特征集错误分类的样本表现良好的特征 我目前正在 Open CV 中使用CvBoost 我得到
  • keras 模型拟合:ValueError:无法找到可以处理输入的数据适配器:

    我正在构建一个简单的 CNN 模型用于多类分类 训练和测试数据位于data path根据所需的类子目录flow from directory的函数ImageDataGenerator 这是我根据数据构建和训练模型的代码 from tenso
  • tensorflow:检查标量布尔张量是否为 True

    我想使用占位符控制函数的执行 但不断收到错误 不允许使用 tf Tensor 作为 Python bool 这是产生此错误的代码 import tensorflow as tf def foo c if c print This is tr
  • 让网络摄像头在 OpenCV 中工作

    我正在尝试让我的网络摄像头在 Windows 7 64 位中的 OpenCV 版本 2 2 中捕获视频 但是 我遇到了一些困难 OpenCV 附带的示例二进制文件都无法检测到我的网络摄像头 最近我发现这篇文章表明答案在于重新编译一个文件 o
  • 如何使用 python 定位和读取 Data Matrix 代码

    我正在尝试读取微管底部的数据矩阵条形码 我试过libdmtx http libdmtx sourceforge net 它有 python 绑定 当矩阵的点是方形时工作得相当好 但当矩阵的点是圆形时工作得更糟 如下所示 另一个复杂问题是在某

随机推荐

  • shell入门第三课 case语句

    虽然if elif语言可以做多项选择 但是使用case在有大量选择的情况下 更为合理 case语句与C语言的case有些相似 可以根据条件选择对应的语句执行 1 形式 case语句 case 变量 in 模式11 模式12 表达式 模式21
  • 区块链节点和区块区别_《区块链百问百答》-区块链的节点竞选,到底是什么...

    上期讲解的区块链在医疗领域的应用 你看了吗 本期视频将解答大家关于节点竞选的困惑 现在跟随由LemoChain策划的 区块链百问百答 来认识一下吧 https www zhihu com video 1139492556072271872
  • 删除字符串最后一个字符的几种方法

    偶然看到的 记录一下 以免忘记 字符串 string s 1 2 3 4 5 目标 删除最后一个 方法 1 用的最多的是Substring 这个也是我一直用的 s s Substring 0 s Length 1 2 用 RTrim 这个我
  • 网络安全-php安全知识点

    目录 语法与注释 输出 变量 弱类型安全 超级全局常量 函数 常用 字符串相关 正则表达式 子字符串位置 数据库相关 mysqli pdo 伪协议相关 反序列化漏洞 serialize函数 unserialize函数 魔法函数 举例 写给和
  • MYSQL——解决多维度随机组合查询场景:grouping sets函数

    一 引入 注意 通常用在构建数据集市和复杂随机组合场景查询时使用 对于经常需要对数据进行多维度的聚合分析的场景 您既需要对A列做聚合 也要对B列做聚合 同时要对A B两列做聚合 因此需要多次使用union all 案例 比如此处有一张表te
  • C++算法之快速排序

    C 算法之快速排序 文章目录 C 算法之快速排序 一 快速排序引出 二 快排步骤 三 代码实现 四 复杂度分析 一 快速排序引出 我们知道 给一个长度为n的序列排序 有三种很简单的算法 选择排序 冒泡排序 插入排序 这三种算法的复杂度均为O
  • SpingBoot集成Swagger和Knife4j

    1 项目开发中编写接口文档实在是痛苦 于是打算引入swagger 之后发现swagger不够舒服 便又引入knife4j springboot的相关依赖不再贴 下面是swagger和knife4j的相关依赖 版本有需求的可以上maven中央
  • 百度群组链接分享 - 铁人圈子

    百度网盘群组链接分享 铁人圈子 铁人圈子 tierenpan com 是一个分享百度网盘群组的发布平台 可以在铁人圈子上实时分享你的群组链接 并且和其他网友互动交流分享资源 群组分享 百度群组链接分享 地址 https www tieren
  • shape文件格式简单说明

    一 简介 ShapeFile是Esri开发的一种空间数据格式 她是一种矢量数据存储格式 通常用于描述几何体形状 点 线 面 及相关属性 二 组成说明 2 1 必须文件 shp 图形格式 用于描述几何体形状 shx 图形索引格式 记录每一个几
  • 一文带你彻底搞懂二叉树(Python实现)——真香

    文章目录 前言 树 树中的一些术语 树的分类 树的存储表示 二叉树 二叉树的性质 二叉树的实现 二叉树结点的实现 二叉树的创建 广度优先遍历 先序 中序 后序遍历 后记 前言 终于到了数据结构中的关键部分了 二叉树 说起二叉树啊 简直是我当
  • PTA 浙大版《C语言程序设计(第4版)》题目集 习题4-6 水仙花数

    原题链接 问题描述 水仙花数是指一个N位正整数 N 3 它的每个位上的数字的N次幂之和等于它本身 例如 153 13 53 33 本题要求编写程序 计算所有N位水仙花数 输入格式 输入在一行中给出一个正整数N 3 N 7 输出格式 按递增顺
  • abp Application层获取请求的Header内容

    abp 如何在应用层返回header自定义的内容 参考 https blog csdn net u012659600 article details 99579369 首先在AppService中注入HttpContextAccessor
  • Ubuntu 更新 CMake 版本

    项目中有时候会出现CMake版本小于最低要求的情况 实际上没有有必要这么高的要求 但是在不能改对方代码的情况下 只能去升级自身的版本了 尝试了网上说的直接update之后再次安装的方式 结果版本号没有改变 sudo apt get upda
  • css文字超出隐藏显示...

    单行 overflow hidden white space nowrap text overflow ellipsis 多行 display webkit box webkit box orient vertical webkit lin
  • Windows10开启Hyper-v并安装Linux CentOS虚拟机

    Windows10开启Hyper v虚拟机配置静态网络 1 Windows10 开启Hyper v 右键单击 Windows 按钮并选择 应用和功能 选择相关设置下右侧的 程序和功能 选择 打开或关闭 Windows 功能 选择 Hyper
  • Element 标签页样式修改

    deep el tabs nav wrap after height 1px deep el tabs item height 50px font size 16px font family PingFang SC font weight
  • Java编程实现Softmax函数功能

    Java编程实现Softmax函数功能 Softmax函数是一种常用的数学函数 广泛应用于机器学习和深度学习领域 尤其在分类问题中起到重要作用 本文将介绍如何使用Java编程实现Softmax函数 并提供相应的源代码 首先 我们来了解一下S
  • centos7启动docker: dial tcp 104.18.123.25:443: i/o timeout.

    在centos7上安装好了docker之后 测试docker是否安装成功 使用官方给出的sudo docker run hello world 解决 再运行一遍命令即可
  • 自定义 scrollview 标头部分的滑动速度慢(scrollview 子控件滑动速度不一致)

    scrollview 子控件滑动速度不一致 先来个布局图 向上滑动时 图片向上划出的速度较下面的蓝色view慢 现在我们先来看布局文件
  • 基于tensorflow的手势检测和手势识别分类

    项目目的 在手机端实现用户手势的检测并且识别用户所做的手势 遇到的问题 首先在手部检测的解决办法中 我尝试过用opencv进行手部识别 但存在的问题是背景对手的识别的影响太大 如果采用颜色进行手和背景的区分的话 又会受到光照等影响 总体而言