使用计算机视觉和 OpenCV 在 Python 中创建手指计数器

2025年4月12日 | 阅读 4 分钟

什么是MediaPipe?

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

MediaPipe的关键特性

  1. 预构建解决方案:它带有一套API,这些API或多或少是现成的应用程序,如人脸检测、手部追踪、姿态估计、目标检测等等。
  2. 实时性能:MediaPipe针对实时应用进行了优化,可以高效地处理输入。
  3. 跨平台:可用于AndroidiOSWeb和桌面平台,使其在各种应用中具有通用性。
  4. 高精度:由于先进的机器学习模型,提供高度准确的结果。
  5. 可定制性:开发人员可以通过将MediaPipe与自己的模型集成来构建自定义的机器学习管道。

常见用例

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

什么是 OpenCV?

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

OpenCV的主要特性

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

OpenCV的一些应用

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

使用Python创建手指计数器

现在,我们将借助计算机视觉和OpenCV开始用Python创建手指计数器。

代码

输出

 
Detected fingers: 5   

Creating a Finger Counter Using Computer Vision and OpenCV in Python

说明

以下是代码工作原理的简单解释:

  • 安装库:此代码然后导入所需的包,包括用于图像处理和手部检测的OpenCV和MediaPipe,以及用于结果可视化的Matplotlib。
  • 图像上传:它会邀请您将图像文件从本地计算机上传到Google Colab环境。文件上传后,代码会更正文件名以从文件中读取图像。
  • 手部检测:在代码段中,借助MediaPipe,遵循手部检测模型,并检测上传图像的手部地标。MediaPipe会识别手部的一些特定特征,例如手指尖,这些特征将用于计数手指。
  • 计数手指:代码定义了一个函数,根据地标来计算有多少根手指被举起。它通过比较手指尖和手指根部的垂直位置(y坐标)来检查每根手指的尖端是否高于其根部。如果尖端高于根部,则将该手指计数为举起。
  • 绘制地标:一旦检测到手部地标,代码就会使用MediaPipe绘图模块在图像上显示这些地标及其连接。
  • 显示输出:最后,它会显示带有绘制的地标的处理后的图像,并将检测到的手指数量打印到输出控制台。