敢不敢和AI比猜拳?能赢算我输----基于手势识别的AI猜拳游戏【含python源码+PyqtUI界面+原理详解】-python手势识别 深度学习实战项目

简介: 敢不敢和AI比猜拳?能赢算我输----基于手势识别的AI猜拳游戏【含python源码+PyqtUI界面+原理详解】-python手势识别 深度学习实战项目

前言

手势识别技术是一种将人类手部的动作转化为机器可理解形式的技术。它可以通过分析图像或视频中的手部或身体动作,来识别并理解用户的意图或指令。手势识别技术广泛应用于人机交互、虚拟现实、增强现实、智能监控等领域。通过手势识别技术,用户可以使用手势进行操作和交互,从而提供更加自然、直观的用户体验。

手势识别技术目前正处于快速发展阶段,并取得了很多重要的研究进展。以下是手势识别技术目前常见的一些研究:

1.传感器技术:传感器技术在手势识别中起着关键作用。例如,深度相机、红外传感器和摄像头等设备能够捕捉到人体的姿态和动作信息。

2.深度学习:深度学习方法在手势识别中被广泛应用。通过使用深度神经网络模型,可以实现对复杂手势的准确识别和分类。

3.实时性:实时手势识别是当前研究的一个重点。研究人员致力于提高算法的效率和响应速度,以满足实时交互的需求。

4.多模态融合:多模态手势识别结合了多种传感器数据,如图像、声音和运动数据,以提高识别准确度和鲁棒性。

5.应用:手势识别技术在各个领域都有广泛应用。例如,在虚拟现实和增强现实中,手势识别可用于交互和控制;在医疗领域,手势识别可用于康复训练和手术操作辅助等。

博主根据Mediapipe框架中的深度学习算法进行手势识别检测,并基于此开发了一款基于手势识别的猜拳软件,可以和机器人进行猜拳游戏。感兴趣的小伙伴可以自己试试。

软件初始界面如下图:

摄像头开启后猜拳的界面如下:

一、软件核心功能介绍及效果演示

手势识别系统主要功能包括以下几个部分:

1. 支持摄像头进行手部动作识别;
2. 可区分左右手,并显示相应手部的坐标位置,以及21个手部关键点;
3. 可与机器人进行猜拳游戏,并显示最终结果;

(1)摄像头猜拳功能演示

点击打开摄像头按钮,即可开启摄像头,再次点击该按钮,会关闭摄像头,操作演示如下:

二、手势识别的基本原理

1.基本原理

Mediapipe是Google开源的一个多媒体处理框架,旨在为开发者提供高效、可扩展的数据流图(dataflow graph)方式来构建多媒体应用程序。它提供了一系列预训练好的模型和工具,用于处理视频、音频、姿势估计、手势识别等多媒体任务。

Mediapipe进行手势识别的基本原理是通过检测和跟踪手部关键点来识别手势。它使用了深度学习模型和计算机视觉技术来实现这一目标。首先,mediapipe使用大量的手部图像数据进行训练,以构建一个手部姿势估计模型。在进行检测时,mediapipe加载训练好的模型,并将输入的图像传递给模型。模型会检测图像中的手部区域,并定位手部关键点的位置。一旦检测到手部关键点的位置,mediapipe会利用计算机视觉技术对这些关键点进行跟踪。这有助于在连续帧之间保持关键点的一致性,以提高识别准确性。然后,根据手部关键点的位置和动作,mediapipe可以将手势分为不同的类别。这些类别可以包括手势如拳头、平手、手势指令等。

2. 代码实现

Mediapipe库基于C++实现,并提供了Python接口,使得开发者能够方便地使用这些功能。下面是使用mediapipe进行手势识别的基本原理:

安装:首先,需要安装mediapipe库。可以通过pip命令进行安装:

pip install mediapipe

导入库:导入mediapipe库和其他必要的依赖项。

python
import cv2
import mediapipe as mp

加载模型:使用mediapipe加载已经训练好的手部关键点模型。

mp_hands = mp.solutions.hands
hands = mp_hands.Hands()
mp_drawing = mp.solutions.drawing_utils

手势识别:打开摄像头并读取视频帧,将每一帧传递给hands.process()方法进行手势识别。

# coding:utf-8
cap = cv2.VideoCapture(0)  # 打开摄像头
while True:
    ret, frame = cap.read()  # 读取视频帧
    if not ret:
        break
    image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)  # 转换颜色空间
    results = hands.process(image)  # 手势识别
    # 处理识别结果
    if results.multi_hand_landmarks:
        for hand_landmarks in results.multi_hand_landmarks:
            mp_drawing.draw_landmarks(
                frame,
                hand_landmarks,
                mp_hands.HAND_CONNECTIONS) # 用于指定地标如何在图中连接。
            for point in hand_landmarks.landmark:
                x = int(point.x * frame.shape[1])
                y = int(point.y * frame.shape[0])
                cv2.circle(frame, (x, y), 5, (0, 255, 0), -1) # 画出关键点
    cv2.imshow('Gesture Recognition', frame)  # 显示结果
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

在上述代码中,我们首先导入了mediapipe库和其他必要的依赖项。然后,使用mp.solutions.hands.Hands()加载手部关键点模型,并打开摄像头读取视频帧。每一帧都传递给hands.process()方法进行手势识别。返回的结果包含检测到的手部关键点的位置信息,我们可以根据这些信息进行相应的处理。手部关键点位置如下图:

通过遍历识别结果中的多个手部关键点,我们可以获取每个关键点在图像中的坐标,并在图像上绘制圆形表示关键点的位置。最后,使用cv2.imshow()方法显示结果,并通过cv2.waitKey()检测按键操作。

这就是使用mediapipe进行手势识别的基本原理。通过结合mediapipe库提供的预训练模型和API,开发者可以更轻松地构建手势识别应用程序。

下图是摄像头检测结果:

根据以上原理,博主基于python+ pyqt5开发了基于手势识别与机器人猜拳的软件。也就是第二部分介绍的软件功能内容。

相关文章
|
9月前
|
机器学习/深度学习 算法 定位技术
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现裂缝的检测识别(C#代码UI界面版)
本项目基于YOLOv8模型与C#界面,结合Baumer工业相机,实现裂缝的高效检测识别。支持图像、视频及摄像头输入,具备高精度与实时性,适用于桥梁、路面、隧道等多种工业场景。
1116 27
|
11月前
|
机器学习/深度学习 人工智能 供应链
从概念到商业价值:AI、机器学习与深度学习全景指南
在这个科技飞速发展的时代🚀,人工智能正以惊人的速度渗透到我们的生活和工作中👀。但面对铺天盖地的AI术语和概念,很多人感到困惑不已😣。"AI"、"机器学习"、"深度学习"和"神经网络"到底有什么区别?它们如何相互关联?如何利用这些技术提升工作效率和创造价值?
589 0
|
7月前
|
机器学习/深度学习 存储 PyTorch
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
Neural ODE将神经网络与微分方程结合,用连续思维建模数据演化,突破传统离散层的限制,实现自适应深度与高效连续学习。
621 3
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
|
7月前
|
人工智能 算法 数据库
给AI装上一个'超级大脑':信息检索如何改变RAG系统的游戏规则
从传统检索方法到现代向量检索,通过一个购物助手的故事,直观展示了不同检索技术的原理与应用。学会这些技巧,让你的AI不再是「记忆只有金鱼长度」的大模型!
334 24
|
人工智能 自然语言处理 前端开发
DeepSite:基于DeepSeek的开源AI前端开发神器,一键生成游戏/网页代码
DeepSite是基于DeepSeek-V3模型的在线开发工具,无需配置环境即可通过自然语言描述快速生成游戏、网页和应用代码,并支持实时预览效果,显著降低开发门槛。
1865 93
DeepSite:基于DeepSeek的开源AI前端开发神器,一键生成游戏/网页代码
|
7月前
|
机器学习/深度学习 人工智能 算法
当AI提示词遇见精密算法:TimeGuessr如何用数学魔法打造文化游戏新体验
TimeGuessr融合AI与历史文化,首创时间与空间双维度评分体系,结合分段惩罚、Haversine距离计算与加权算法,辅以连击、速度与完美奖励机制,实现公平且富挑战性的游戏体验。
|
9月前
|
机器学习/深度学习 人工智能 PyTorch
AI 基础知识从 0.2 到 0.3——构建你的第一个深度学习模型
本文以 MNIST 手写数字识别为切入点,介绍了深度学习的基本原理与实现流程,帮助读者建立起对神经网络建模过程的系统性理解。
828 15
AI 基础知识从 0.2 到 0.3——构建你的第一个深度学习模型
|
8月前
|
人工智能 JSON 程序员
别再和AI玩文字游戏:JSON提示工程让AI乖乖按表填空
厌倦了和AI玩猜谜游戏吗?JSON提示工程来拯救你!用咖啡订单的方式和AI对话,让每次交互都精准到位,告别模糊不清的回复,迎接可预测的AI输出时代。
422 9
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
AI 基础知识从 0.3 到 0.4——如何选对深度学习模型?
本系列文章从机器学习基础出发,逐步深入至深度学习与Transformer模型,探讨AI关键技术原理及应用。内容涵盖模型架构解析、典型模型对比、预训练与微调策略,并结合Hugging Face平台进行实战演示,适合初学者与开发者系统学习AI核心知识。
677 15

推荐镜像

更多