姿态估计 手势动作实时识别项目(基于mediapipe、keras进行实现)

姿态估计 手势动作实时识别项目(基于mediapipe、keras进行实现)

  • 0、功能展示
  • 1、项目原理介绍
  • 2、数据集采集脚本
  • 3、将采集到的动作数据集利用mediapipe库检测手部关键点信息,转换成数据信息保存到本地
  • 4、训练一个效果一般的随机森林分类器
  • 5、使用Kreas训练一个效果好点的全连接层分类器
  • 6、实时手部动作检测效果测试

项目代码下载地址
更多相关内容请参考:
姿态估计 MediaPipe实现手势,人体姿态,面部动作估计的用法

0、功能展示

在这里插入图片描述

1、项目原理介绍

本项目主要实现可以实时动态进行人的手势动作的识别,识别的手势动作由以下几类为例:
在这里插入图片描述
项目的主要思路是:
编写脚本,采集以上9类动作图像各100张作为训练集,使用mediapipe库作为工具检测手部关节,获取到手部的20个关键点信息坐标,将关键点信息坐标去除污染数据后,作为训练数据用于训练Keras全连接网络分类器,识别手势动作。
本次项目中,分别采用scikit-learn库训练随机森林分类器与Keras全连接层分类器,对比发现后者效果更好
在这里插入图片描述

opencv-python==4.7.0.68
mediapipe==0.9.0.1
scikit-learn==1.0.2
Keras==2.0.2

2、数据集采集脚本

import cv2,os

DATA_DIR="./data"
if not os.path.exists(DATA_DIR):
    os.makedirs(DATA_DIR)

number_of_classes=1
dataset_size=100
print("-------")

cap=cv2.VideoCapture(0)#mac系统选择1   如果打开本地视频,就直接将0改为视频的地址就可以了
success=cap.isOpened()#返回的是bool类型,用于查看是否可以打开本地的视频
print(success)

for num in range(number_of_classes):
    if not os.path.exists(os.path.join(DATA_DIR,str(num))):
        os.makedirs(os.path.join(DATA_DIR,str(num)))

    print("Collecting data for class {}".format(num))
    print("000000000000000000000000000000000000000")
    counter = 0
    while True:
        ret,frame=cap.read()
        cv2.putText(frame,"Ready? Press 'Q' !:",(100,50),cv2.FONT_HERSHEY_SIMPLEX, 1.3, (0, 255, 0), 3,cv2.LINE_AA)
        cv2.imshow("frame",frame)
        if cv2.waitKey(1)==ord('q'):
            break
        if  counter < dataset_size:
            ret,frame=cap.read()
            frame_=frame.copy()
            cv2.putText(frame_, "Ready? Press 'Q' !:", (100, 50), cv2.FONT_HERSHEY_SIMPLEX, 1.3, (0, 255, 0), 3,
                        cv2.LINE_AA)
            cv2.imshow("frame",frame_)
            if cv2.waitKey(1)==ord('w'):
                cv2.imwrite(os.path.join(DATA_DIR,str(num),'{}.jpg'.format(counter)),frame)
                print("--------------------------------------已保存本地",counter,num)
                counter+=1
        else:
            break

cap.release()
cv2.destroyAllWindows()

3、将采集到的动作数据集利用mediapipe库检测手部关键点信息,转换成数据信息保存到本地

import os
import pickle

import mediapipe as mp
import cv2
import matplotlib.pyplot as plt


mp_hands = mp.solutions.hands
mp_drawing = mp.solutions.drawing_utils
mp_drawing_styles = mp.solutions.drawing_styles

hands = mp_hands.Hands(static_image_mode=True, min_detection_confidence=0.3)

DATA_DIR = './data'

data = []
labels = []
for dir_ in os.listdir(DATA_DIR):
    for img_path in os.listdir(os.path.join(DATA_DIR, dir_)):
        data_aux = []

        x_ = []
        y_ = []

        img 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/171058.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件产品生命周期(SDLC)四个阶段

软件产品生命周期&#xff1a;指软件产品研发全部过程、活动和任务的结构框架。 产品的生命周期一般包括四个阶段&#xff1a;引入期、成长期、成熟期和衰退期&#xff0c;在不同的阶段中&#xff0c;市场对产品的反应不同&#xff0c;其销售特点不同&#xff0c;因而产品管理的…

【linux】安装telnet

1 安装telnet-server yum -y install telnet-server 安装telnet yum -y install telnet 启动telnet服务 service xinetd restart 报错了&#xff1a; Redirecting to /bin/systemctl restart xinetd.service Failed to restart xinetd.service: Unit not found. 正在重定…

Dirac‘s BRA and KET notation

from kets to bras expansions the operater matrix elements adjoint of a linear operator Hermitian and Uniraty Operators Hermitian operator defination:

最前端|低代码平台轻松设计可视化图表【内含网站资源】

在前端设计中&#xff0c;我们经常需要使用可视化图表来呈现数据和信息。然而&#xff0c;每次都要自己从头开始设计图表未免太过繁琐。为了解决这个问题&#xff0c;我们调研了low code平台上的可视化图表功能。 本篇文章为大家带来以下问题的解答&#xff1a; &#xff08;1&…

基于SSM的课程辅助教学平台的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

MKRTOS MCU上的微内核操作系统

MKRTOS 全称是 Micro-Kernel Real-Time Operating System&#xff0c;中文名字是微内核实时操作系统。MKRTOS 是首款在开源的支持MCU的微内核操作系统。未来还将在MCU上支持虚拟化&#xff01;&#xff01;下载地址&#xff1a;https://gitee.com/IsYourGod/mkrtos-realMKRTOS被…

YOLOV5 人员检测项目【学习笔记(十一)】

这篇博客为修改过后的转载&#xff0c;因为没有转载链接&#xff0c;所以选了原创 文章目录 一、安装Pytorch 及 YOLO v51.1 安装GPU版 pytorch1.2 安装YOLO v5所需依赖 二、YOLO v5训练自定义数据2.1 标注数据2.1.1 安装labelImg2.1.2 标注 2.2 准备数据集2.2.1 组织目录结构…

全国各区县地区生产总值数据,含shp和xlsx格式!

​根据国家统计局公布的数据&#xff0c;全国各区县地区生产总值数据是衡量一个地区经济发展水平的重要指标。 今天我们来分享全国各区县地区生产总值数据~ 本文提供的数据是shpexcel格式的&#xff0c;已经经过清洗加工&#xff0c;目前为面的几何类型&#xff0c;时间版本为…

2024年最新FLStudio21破解版注册机百度网盘免费下载安装激活教程

高考完啦&#xff0c;你也迎来了人生中最长的暑假&#xff0c;现在你总不能以没时间为借口了&#xff0c;是时候学点属于自己的才艺了。还有3个月&#xff0c;你就会迎来开学迎新晚会这个校园中最受瞩目的活动。在这个特殊的时刻&#xff0c;如果你想以独特的方式展现自己&…

肉豆蔻酰六肽-16——让皮肤更加光滑、更加柔软

肉豆蔻酰六肽-16 一种合成的脂肪酸连接肽&#xff0c;已知可提高皮肤的弹性&#xff0c;明显镇静&#xff0c;并帮助皮肤看起来和感觉更光滑、更柔软。它是由肉豆蔻酸与六肽 16 结合而成。肉豆蔻酰六肽 16 被归类为蛋白质刺激肽&#xff0c;这意味着它可以帮助皮肤表面&#x…

Android AIDL中使用Surface问题

1.构建ITest.aidl文件 package com.xxx.xxxx;import android.view.Surface;interface IMonitorService {boolean addSurface(in Surface surface);boolean removeSurface(in Surface surface); } 2.构建时报错 3.Surface源码分析 android.view.Surface中包含两个Surface类&am…

【外汇天眼】投资之道:成功背后的频繁交易陷阱

成功的投资需要超越人性的短板&#xff0c;其中之一就是频繁交易。巴菲特曾明言&#xff0c;如果商学院的毕业生在毕业后拿一张卡片&#xff0c;每买一支股票就打一个洞&#xff0c;那么这张卡片最终会被打得最少的人将成为巨富。“钱在这里从活跃的投资者流向有耐心的投资者。…

品尝葡萄酒要注意的重点事项有哪些?

给自己倒一杯葡萄酒&#xff0c;抿一口&#xff0c;这很容易就知道这是不是你喜欢的了。通过一些练习和微调可以加深你对葡萄酒特性的理解&#xff0c;并在品尝时挖掘出葡萄酒中所有的味道。任何品酒师在分析新酒时都会遵循一系列步骤和规则&#xff0c;从外观到香气、味道和特…

随手笔记(四十九)——GsonBuilder.setLenient()

启动时报错 更换gson版本即可 原先2.2.4 现更换为2.8.2就可以了

Nosql的redis概述及基本操作

关系数据库与非关系型数据库概述 关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言&#xff0c;用于执行对关系型…

android生成jks文件

jks文件用来校验微信支付 生成的方法&#xff1a;

合并区间(排序、贪心)

LCR 074. 合并区间 - 力扣&#xff08;LeetCode&#xff09; 题目描述 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中…

磐舟CI-Web前端项目

整体介绍 磐舟作为一个devops产品&#xff0c;它具备基础的CI流水线功能。同时磐舟的流水线是完全基于云原生架构设计的&#xff0c;在使用时会有一些注意事项。这里首先我们要了解磐舟整体的流水线打包逻辑。 文档结构说明 一般来说&#xff0c;磐舟推荐单个业务的标准git库…

Camtasia2024免费版mac电脑录屏软件

作为一个互联网人&#xff0c;没少在录屏软件这个坑里摸爬滚打。培训、学习、游戏、影视解说……都得用它。这时候没个拿得出手的私藏软件&#xff0c;还怎么混&#xff1f;说实话&#xff0c;录屏软件这两年也用了不少&#xff0c;基本功能是有但总觉得缺点什么&#xff0c;直…