Python | 基于Mediapipe框架的手势识别系统

一、项目要求

        1、题目

         本题着力于解决会商演示系统中的非接触式人机交互问题,具体而言,其核心问题就是通过计算机视觉技术实现对基于视频流的手势动作进行实时检测和识别。通过摄像头采集并识别控制者连续的手势动作,完成包括点击、平移、缩放、抓取、旋转等5种基本交互功能,除此之外还可针对不同客户的具体业务需求,可在这五种基本手势动作的基础上进行扩展。

        选手可利用传统计算机视觉方法或基于机器学习/深度学习的方法,通过对基于摄像头采集的连续视频输入中用户的手势动作进行检测和识别,输出相应的控制信号,从而完成会商演示系统的交互。结合业务需求,进行算法模型的开发,实现真实环境下对用户控制手势的识别,达到实时交互的目的。

        2、技术要求与指标

        能够实现对摄像头拍摄的视频流中控制手势进行检测和识别,并以此实时控制演示系统。指标要求:

        (1)每一种手势动作的检测识别准确率达到80%以上

        (2)每一个手势动作的检测和识别时间(即从执行完手势动作到输出结果之间的时间)不超过500ms

        一般开发环境以及开发语言不限(可使用Python+OpencCV,深度 学习框架可使用PyTorch、TensorFlow 等)。开发过程允许使用开源代码,但需要在文档中详细注明,且其许可证需保证商业可用,不能采用商用模块。

二、运行环境

        本系统能够运行在基于PC操作系统Windows环境下,要求Windows操作系统安装Python 3.9 及以上环境, 要求安装相关库OpenCV、Mediapipe、PyQt5、Qtawesome。

安装OpenCV —— python3.9安装OpenCV

安装Mediapipe —— Python安装Mediapipe

安装PyQt5 —— PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)

安装Qtawesome —— Python安装Qtawesome

三、效果

        1、基本动作

                包括点击、抓取、平移、缩放、旋转5个基本动作

        2、扩展动作

                包括数字一、二、三、四、五、六、我爱你

四、代码

        1、项目结构

        2、项目代码

                (1)布局代码

# -*- coding: utf-8 -*-
import sys

import qtawesome
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon


class WindowLayout(object):
    def __init__(self):
        # 容器
        self.central_widget = None

        # 组件
        self.close_button = None
        self.other_button = None
        self.minimize_button = None

        self.start_button = None
        self.camera_button = None

        self.camera_label = None
        self.result_label = None
        self.running_label = None

    def setupUi(self, MainWindow):
        # 平台
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1250, 730)

        # ------------- 代码布局 ------------- #
        self.central_widget = QtWidgets.QWidget(MainWindow)
        self.central_widget.setObjectName("central_widget")
        MainWindow.setCentralWidget(self.central_widget) # 把容器放到平台上面

        # 关闭按钮
        self.close_button = QtWidgets.QPushButton(self.central_widget)
        self.close_button.setGeometry(QtCore.QRect(60, 60, 30, 30))
        self.close_button.setObjectName("close_button")
        # 空白按钮
        self.other_button = QtWidgets.QPushButton(self.central_widget)
        self.other_button.setGeometry(QtCore.QRect(120, 60, 30, 30))
        self.other_button.setObjectName("other_button")
        # 最小化按钮
        self.minimize_button = QtWidgets.QPushButton(self.central_widget)
        self.minimize_button.setGeometry(QtCore.QRect(180, 60, 30, 30))
        self.minimize_button.setObjectName("minimize_button")

        # 打开摄像头 按钮
        self.camera_button = QtWidgets.QPushButton(self.central_widget)
        self.camera_button.setIcon(qtawesome.icon('fa5s.video', color='white'))
        self.camera_button.setText(" 打开相机")
        self.camera_button.setGeometry(QtCore.QRect(60, 130, 150, 40))
        self.camera_button.setObjectName("camera_button")
        # 手势检测 按钮
        self.start_button = QtWidgets.QPushButton(self.central_widget)
        self.start_button.setIcon(qtawesome.icon('fa5s.eye', color='white'))
        self.start_button.setText(" 手势检测")
        self.start_button.setGeometry(QtCore.QRect(60, 190, 150, 40))
        self.start_button.setObjectName("start_button")

        # 检测结果展示部分
        self.result_label = QtWidgets.QLabel(self.central_widget)
        self.result_label.setText("结果")
        self.resu
  • 28
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值