目录

一、开发环境

二、手势识别的概述

三、Hand Landmark模型

四、工具和依赖库安装

4.1 python下载及安装:

4.2 pycharm 安装

五、多手势识别源码

5.1 源码使用注意事项

5.2 运行效果展示


一、开发环境

1、pycharm

2、python3.9

3、opencv-python

4、mdiapipe-0.8.3

二、手势识别的概述

感知手的形状和运动的能力是改善各种技术领域和平台的用户体验的重要组成部分。例如,它可以形成手语理解和手势控制的基础,还可以在增强现实中实现数字内容和信息在物理世界之上的叠加。
MediaPipe Hands是一款高保真的手和手指跟踪解决方案。它使用机器学习(ML)从单个帧中推断出21个手的3D地标。当前最先进的方法主要依赖于强大的桌面环境进行推理,并且在移动电话上实现了实时性能,甚至可以扩展到多手。

三、Hand Landmark模型

在整个图像上进行手掌检测之后,Hand Landmark模型通过回归对检测到的手区域内的21个3D手关节坐标进行精确的关键点定位,即直接坐标预测。
为了获得训练的真实数据,使用了21个3D坐标手动标注了约30K幅真实的图像,如下所示(如果它存在于对应的坐标中,从图像中获取Z值)。为了更好地覆盖手部姿势,并提供对手部几何特性的额外监督,我们还可以在各种背景上渲染高质量的合成手部模型,并将其映射到相应的3D坐标。

四、工具和依赖库安装

4.1 python下载及安装:

  • 官网下载(现在的电脑基本都支持64bit):

  • 下载后双击运行,记得先勾选 “Add Python 3.9 to PATH ”,再点击 “Install Now” 安装。

4.2 pycharm 安装

  • 官网下载(默认安装即可)

五、多手势识别源码

import cv2
import mediapipe as mp
import timeclass handDetector():def __init__(self, mode=False, maxHands=2, complexity=1, detectionCon=0.5, trackCon=0.5):# 初始化类的参数self.mode = modeself.maxHands = maxHandsself.complexity = complexityself.detectionCon = detectionConself.trackCon = trackCon# 初始化手跟踪模块self.mpHands = mp.solutions.hands# mediapipe version: 0.8.11# self.hands = self.mpHands.Hands(self.mode, self.maxHands, self.complexity,#                                 self.detectionCon, self.trackCon)# mediapipe version: 0.8.3self.hands = self.mpHands.Hands(self.mode, self.maxHands,self.detectionCon, self.trackCon)self.mpDraw = mp.solutions.drawing_utils# 跟踪手关节点位置def findHands(self, img, draw=True):imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)self.results = self.hands.process(imgRGB)if self.results.multi_hand_landmarks:for handLms in self.results.multi_hand_landmarks:if draw:self.mpDraw.draw_landmarks(img, handLms,self.mpHands.HAND_CONNECTIONS)return img# 对手关节点绘制圆圈def findPostion(self, img, handNo=0, draw=True):lmList = []if self.results.multi_hand_landmarks:for myHand in self.results.multi_hand_landmarks:for id, lm in enumerate(myHand.landmark):h, w, c = img.shapecx, cy = int(lm.x * w), int(lm.y * h)lmList.append([id, cx, cy])if draw:cv2.circle(img, (cx, cy), 12, (255, 0, 255), cv2.FILLED)return lmListdef main():pTime = 0cTime = 0# 打开摄像机Camera0cap = cv2.VideoCapture(0)# 实例化类对象detector = handDetector()while True:# 读取摄像机的视频图像success, img = cap.read()# 跟踪关节点位置img = detector.findHands(img)# 对手关节点绘制圆圈lmList = detector.findPostion(img)# 计算实时帧率cTime = time.time()fps = 1 / (cTime - pTime)pTime = cTime# 显示实时帧率cv2.putText(img, str(int(fps)), (10, 70), cv2.FONT_HERSHEY_PLAIN, 2,(255, 0, 255), 2)# 显示视频图像cv2.imshow("Image", img)cv2.waitKey(1)if __name__ == "__main__":main()

5.1 源码使用注意事项

  • 本例程是基于 mediapipe-0.8.3 版本实现的 ,同时也兼容了 0.8.11 版本的代码实现。
  • 如果你已安装了 mediapipe-0.8.11 版本,可将已注释掉的代码打开,并将 0.8.3 版本相关的实现代码注释掉即可。
  • 0.8.11 比 0.8.3 版本多了一个 complexity 参数,同时手掌标识号的顺序也存在差异。

5.2 运行效果展示

opencv之(多)手势识别相关推荐

  1. python基于opencv的手势识别_怎么在Python3.5 中利用OpenCV实现一个手势识别功能

    怎么在Python3.5 中利用OpenCV实现一个手势识别功能 发布时间:2020-12-22 11:56:32 来源:亿速云 阅读:67 作者:Leah 怎么在Python3.5 中利用OpenC ...

  2. 体感游戏 | 手势识别玩飞机大战游戏(二) Python+OpenCV实现简易手势识别功能

    后面将分四篇文章来介绍实现手势识别控制飞机大战游戏的功能,它们分别是: 使用Pygame实现简易飞机大战小游戏 使用Python+OpenCV实现简单手势识别 使用OpenCV实现手势识别玩飞机大战游 ...

  3. 基于python+opencv+mediapipe实现手势识别详细讲解

    目录 运行环境: 一.opencv 二.meidapipe配置 三.实现手部的识别并标注 1.参数分析 1.multi_hand_landmarks 2.multi_hand_world_landma ...

  4. 基于Opencv的简易手势识别

    这是我作为期末的python大作业设计的作业,在此感谢CSDN上的大佬,网上类似的程序有不少,学习借鉴后经过自己的整理,程序比较简陋,没有大佬们做的那么丰富,属于个人应付本科课程设计的作业,这篇文章也 ...

  5. 四川大学 opencv 人脸识别 手势识别 研究项目

    http://v.youku.com/v_show/id_XNDAzMjkxOTAw.html?from=y1.2-1-92.3.3-1.1-1-1-2

  6. opencv+tensorflow手势识别+图片特效

    一.效果展示 手势识别+特效展示!(此处只录入四种,简单运行!!!) 二. 项目介绍 本次项目是在上一篇博文上的改进版本,在此次设计中录入了四种手势增加了训练图片和训练轮数,使得准确率提升,并且改进了 ...

  7. 体感游戏 | 手势识别玩飞机大战游戏(三) 使用OpenCV实现手势识别玩飞机大战游戏

    后面将分四篇文章来介绍实现手势识别控制飞机大战游戏的功能,它们分别是: 使用Pygame实现简易飞机大战小游戏 使用Python+OpenCV实现简单手势识别 使用OpenCV实现手势识别玩飞机大战游 ...

  8. OpenCV C++案例实战二十二《手势识别》

    OpenCV C++案例实战二十二<手势识别> 前言 一.手部关键点检测 1.1 功能源码 1.2 功能效果 二.手势识别 2.1算法原理 2.2功能源码 三.结果显示 3.1功能源码 3 ...

  9. 基于Python+Open CV的手势识别算法设计

    素材资料下载: 基于Python+OpenCV的手势识别算法设计源代码材料-机器学习文档类资源-CSDN下载采用Python的集成开发环境Pycharm进行本次课程设计,在Pycharm中进行需要库( ...

最新文章

  1. 线程池的介绍及简单实现
  2. 企业服务器虚拟化方案文档,服务器虚拟化在企业中的应用
  3. python的格式_python 代码格式
  4. ADS_LPC2103开发板SPI 4位数码管测试试验
  5. C++远航之封装篇——深拷贝、浅拷贝
  6. mysql5.7配置用户名密码_MySQL57安装图解
  7. 使用Python查看汉诺塔移动详细过程
  8. CSS3 background-clip属性
  9. 达摩院清华博士:摸鱼,有助于你灵光闪现
  10. jQuery学习整理 (3) 使用jQuery操作元素的属性与样式
  11. 微信开发者工具小技巧——快速打开微信程序API文档。
  12. 高中数学怎么学好学好高中数学的技巧
  13. 从古琴音乐中浅谈中国古代文人音乐
  14. 用MATLAB画线段(简单说)
  15. null与undefined的异同点
  16. 墨画子卿第四章第6节:卷轴
  17. 基于Citespace软件对WOS文献数据进行可视化的操作
  18. hdu5454 Excited Database (线段树)
  19. 华为手机左侧快捷方式_华为手机的这六个快捷键,让使用更简便!
  20. 队友代码神注释,ORZ 留下两行泪

热门文章

  1. D3D9学习笔记之纹理映射
  2. Android6.0,7.0拍照和相册异常,运行时权限
  3. 自己的第一个C语言程序 实现Cas9靶序列自动输出为cacc-/aaac-的引物列表——20211020
  4. 东莞c语言培训机构,东莞从零开始学习编程暑假
  5. FairFuzz: A Targeted Mutation Strategy for Increasing Greybox Fuzz Testing Coverage
  6. 飞往未来之路|闪马智能新奇点·品牌日暨新世界智能技术沙龙
  7. 业内公认的 OLAP 数据库黑马 ClickHouse 有哪些复合类型
  8. calendar前推n天_当前时间往前/往后推几天、几个月、几年
  9. mp3格式转换器怎么用?给你快速转换音频格式的方法
  10. kafka文档(2)----kafka API(java版本)