手势识别实现人机交互

手势识别实现人机交互

背景

手势识别技术作为一种新型的技术,不仅能够带来良好的交互体验,而且在现实生活中具有重要的应用价值。手势识别技术能够很好的帮助具有听力障碍和听力衰弱的人进行交流,同时,它也能帮助一些因为年纪大而行动不便老人,使他们通过手势交互实现远程控制,为他们在生活上带来更多的便利。

有相关研究表明,手势交互方式,对于老人来说,是一种更加容易理解和接收的交互方式。手势交互还存在以下的潜在应用场景:(1)虚拟目标操控;(2)多媒体和游戏交互;(3)车载娱乐系统;(4)用于卫生条件较差的环境下,如厨房和手术室等。

目标

设计一个系统可以开启摄像头识别左右手势来控制鼠标与键盘以达到人机交互的目的,手势操作可以自定义成想要的键盘按键(包括组合键)。能够通过预训练的手势动作,实现自定义的键盘按键以及鼠标动作关联,也可以通过自定义手势,训练想要的按键组合。

可行性分析

  1. 可以使用mediapipe库和pyautogui实现使用电脑摄像头进行手势识别,实时控制电脑鼠标完成移动、左右键、上下翻页等功能,实时控制键盘完成相应按键的按下。
  2. MediaPipe是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架。MediaPipe的核心框架由C++实现。MediaPipe Hands为MediaPipe中的手部识别模型,它是一种高保真手和手指跟踪解决方案,采用机器学习 (ML) 从单个帧中推断出手的21个3D地标。
  3. AutoPy是一个简单跨平台的 Python GUI工具包,可以控制鼠标,键盘,匹配颜色和屏幕上的位图。

项目方案设计

主体

下图代码实现了opencv对图片获取与转换,并且根据mediapipe得到手部关键点结果。

下图代码实现了手部关键点信息的处理,得到识别手势结果。

下图代码利用了pydirectinput实现了对鼠标、键盘的控制。鼠标位置根据于右手食指相对画面位置决定,利用预先设定的手势执行鼠标点击操作和键盘按键按下。在执行组合键时,将所需要的几个按键按下后延迟几秒再释放便能达到需要的效果了。

跟踪

手部检测

下图代码实现了手部关键点的绘制。

位置处理

手指识别

手部检测

行为控制

模块调用关系

项目部署与展示

项目整体是基于GitHub上给出的开源手势识别项目hand-gesture-recognition-mediapipe,在此基础上进行二次开发。

hand-gesture-recognition-mediapipe给出了部分简单的预训练手势以及展示效果,如下图:

但是为了让手势识别能够落实于一个具体的项目,我们首先将目标定于简单的马里奥游戏即需要能够识别上下左右四个按键的手势,并实现与马里奥游戏的按键交互。其中需要自行录入较多的操作手势进行一个模型训练,为了方便操作以及简化训练,我们采用左手操控按键,右手控制鼠标的方式。在尝试的初步效果还不错后,我们便是将方向转移至较为复杂的英雄联盟游戏,其中需要录入较多技能按键,以及实现鼠标的左右键控制。

但是在录入数据,并测试外界反应正确之后,却无法实现游戏中的按键相应,究其原因可能是英雄联盟游戏内部将按键操作识别为了第三方软件的介入,阻断了类似于脚本按键的控制,只能选择较为简单的游戏控制如2048、贪吃蛇,最终的实现效果是Vampire Survivors这款游戏。同时基于糖豆人游戏这款游戏,我们又使用了组合键(跑跳)。

项目总结

手势识别技术尽管已经在过去十多年间有了长足的发展,但是在手势识别上依然存在很多的挑战。首先,手不是一个刚体目标,而是一个拥有20个自由度(DOF)铰链型的目标,因而,手势是很灵活和多变的,这意味着,同一个人在不同的时间和环境下,手势都会不一样;其次,动态手势的手部动作是一直在变化的,这导致手的动作速度一直在连续变化,不容易捕捉;再者,有时候,负样本会跟待识别的正样本具有很高的相似度,从而导致识别精度不高;最后,一般而言,手势识别的识别反馈时间要少于100ms,这要求识别方法要足够的快速。

综上所述,手势识别技术在现实生活应用上具有很大的价值,并且这项技术依然不是很成熟,具有很多待攻克的困难,因而,手势识别技术依然具有很高的研究价值。

相关推荐
兵慌码乱3 天前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
BSD_HY8 天前
2026年FSR传感器行业报告:市场规模、竞争格局与发展趋势
人机交互·制造·fsr·薄膜开关·深圳工厂
某林2128 天前
从 Isaac Lab API 踩坑到硬件 MVP 的全链路实战破局
python·机器人·人机交互·ros2
洛星核10 天前
CrewAI 安装、使用方法详细全解
人工智能·github·人机交互·ai编程·agi·智能体
洛星核10 天前
Aider 安装、使用方法详细全解
人工智能·github·人机交互·ai编程·agi
Mr..Jackey11 天前
瑞佑 RUI Builder 图形化 UI 设计工具
arm开发·人工智能·单片机·ui·人机交互·ra8889·lcd控制芯片
元岳数字人小元11 天前
AI 数字人开发公司浅谈 虚拟数字人打造景区新服务
人工智能·人机交互·交互
小玮看世界11 天前
【技术成长实录】北京地铁12号线数据分析系统:从一个观察到一个完整项目的演进之路
python·人机交互·学习方法·cicd·项目交付
byte轻骑兵11 天前
【AVRCP】规范精讲[28]:媒体源上电全流程,蓝牙音频控制启动就靠这一套
网络·音视频·人机交互·媒体·avrcp
kaixinshier12 天前
【无标题】
大模型·人机交互·语音识别·tts·s100p