使用 Python 检测左右手

12 2025 年 4 月 | 阅读 5 分钟

什么是 MediaPipe?

MediaPipe 是 Google 提供的一套独立的解决方案,用于支持机器学习处理路径在跨平台应用程序中的应用。它提供了用于计算机视觉、音频信号处理以及其他任何机器学习操作的优化模型解决方案。

MediaPipe 的主要特点

  1. 预构建的解决方案:它提供了一组API,这些 API 几乎可以直接用于应用程序,例如人脸检测、手部追踪、姿势估计、对象检测等等。
  2. 实时性能:MediaPipe 针对实时应用程序进行了优化,可以高效地处理输入。
  3. 跨平台:适用于AndroidiOS、Web 和桌面平台,使其能够用于各种应用。
  4. 高精度:由于先进的机器学习模型,可提供高度精确的结果。
  5. 可定制性:开发人员可以通过将 MediaPipe 与自己的模型集成来构建自定义的机器学习管道。

常见用例

  1. 手部追踪:检测手部动作或手势。
  2. 姿势估计:识别身体姿势,用于健身应用或动画。
  3. 人脸网格:详细的人脸映射,用于增强现实 (AR)
  4. 对象检测:识别图像或视频中的对象。
  5. 音频处理:语音或声音分析。

什么是 OpenCV?

OpenCV 是一个开源的并行处理数值库,用于图像处理和计算各种查找。它们用于分析图像、视频和实时数据,以创建其他应用程序,例如对象检测或图像识别,以及追踪人脸。

OpenCV的主要特性

  1. 图像处理:OpenCV 包含用于处理图像的类,包括更改图像大小、旋转、应用滤镜以及在不同颜色空间之间进行转换。
  2. 视频处理:此功能特别支持固定和持续的读取和写入,或对视频文件(或实时视频流)的顺序处理。
  3. 对象检测:使用可用的标准模型和算法识别面部、眼睛、手等。
  4. 边缘检测:确定图像中的边界,这在研究形状和对象时很有用。
  5. 机器学习集成:使用 K-均值聚类、支持向量机 (SVM) 和神经网络等其他机器学习算法来分析和分类图像。
  6. 多平台支持:兼容WindowsLinuxMacOS、Android 和 IOS 操作系统。

OpenCV 的一些应用

  1. 人脸识别:用于安全和身份验证系统。
  2. 对象检测:帮助机器人识别重要的对象,可能用于机器人技术或监控。
  3. 增强现实:将现实世界的数据与虚拟数据结合。
  4. 医学成像:医院。这项工作涉及帮助分析 X 射线、CT 扫描或 MRI 扫描。
  5. 游戏和动画:改善实时环境中的通信体验。

左右手检测的实现

现在,让我们来看下面的 Python 程序,它演示了使用 MediaPipe 和 OpenCV 实现左右手检测系统的过程。

代码

输出

 
Hand detected: Left with confidence 0.99
Hand detected: Right with confidence 0.94   

Right- and Left-Hand Detection Using Python

说明

  • 安装库:安装必要的库,包括 MediaPipe、OpenCV 和Matplotlib。这些库有助于进行手部检测、图像处理和可视化。
  • 导入库:导入必需的 Python 库,如 MediaPipe(用于手部检测)、OpenCV(用于图像处理)和 Matplotlib(用于显示图像)。
  • 上传图片:提示用户上传图片。这张图片将被处理以检测手部。
  • 转换图片:将上传的图片从 OpenCV 使用的 BGR 格式转换为大多数可视化工具使用的 RGB 格式,以确保颜色正确显示。
  • 初始化 MediaPipe Hands:使用特定设置初始化 MediaPipe 的手部检测模块。
    • static_image_mode = True 确保它处理单个图像。
    • max_num_hands = 2 允许检测多达两只手。
    • min_detection_confidence = 0.5 设置手部检测的阈值。
  • 处理图片:MediaPipe 处理图片以检测手部及其地标(手部的关键点)。
  • 检查是否检测到手:代码会检查图像中是否检测到任何手。
    • 如果检测到手,则会打印其类型(左或右)和置信度分数。
    • 在图像上绘制手部地标。
  • 显示标注后的图片:使用 Matplotlib 显示标注后的图片,其中标出了检测到的手和地标。
  • 保存和下载结果:保存标注后的图片,并提供下载。

左右手检测的实际应用

  1. 手语识别:有助于识别手语手势,以便与听障人士进行交流。区分左右手对于识别某些手语手势至关重要。
  2. 游戏和虚拟现实 (VR):用于交互式游戏和 VR 应用,其中手部动作控制环境。了解正在使用哪只手可以增强游戏体验并提高控制精度。
  3. 机器人技术:使机器人能够识别和响应人类的手势。可用于协作机器人 (cobots) 以识别基于手势的命令。
  4. 健身应用:追踪运动或瑜伽的手部姿势,确保动作正确。区分左右手有助于拳击或舞蹈训练等活动。
  5. 医疗应用:通过监测手部动作并确保患者正确进行锻炼来辅助物理治疗。有助于研究运动技能和诊断神经系统疾病。
  6. 安全系统:用于生物识别系统进行手势身份验证或访问控制。区分用右手或左手做出以执行特定命令的手势。
  7. 增强现实 (AR):通过允许使用手势进行精确交互来增强 AR 体验。左右手识别是实现对称或镜像交互的关键。
  8. 教育:有助于为儿童创建互动式学习工具,例如教授左右辨别的游戏。