结合MLP与MediaPipe的手势识别
前言
用 MLP 和 MediaPipe 实现对手势的识别,这其实是个老项目了,我之前也做过,但当时学得一知半解🤦🏻♀️,项目虽然能跑起来,但效果不太理想,识别效率低。这次我干脆重新做一个新的。
整体思路
这个项目的整体思路比较清晰,简单来说,就是从摄像头捕获手势关键帧,将图像传输给模型,模型根据已学内容判断更像哪种手势,最后将结果输出给用户。下面将阐述一下流程细节。
细节
目标检测
整个流程的起点从目标检测开始,这个模块的任务就是找到整个手部。在实际的环境中,我们的背景大多情况下是杂乱的,即便背景只是一堵纯色的墙,光线从不同角度照射也可能给关键帧引入噪声。此时需要借助 OpenCV 通过肤色检测和形态学操作把手部区域分割出来,然后用轮廓检测和 Hu 矩计算提取可量化手势的几何特征,这样手部位置就拿到了。
第一步就此完成。
关键点检测
拿到手势位置后,让模型根据手势特征与已学数据进行比对,判断属于哪种手势——这是入门级的做法。但这个方法的时间花费较长,因为需要先用大量的数据集来训练模型。还有一种更简单的做法:直接使用 MediaPipe 识别手势关键点,再把关键点数据交给神经网络做分类。MediaPipe 可以理解为一个提前学习过三维手势骨节点(关键点)位置的模型,无论你给它任何手势都能自动标出关键点,这样你就可以利用它来训练你自己的手势(虽然它也内置了7种手势),因为它学的是坐标特征。
具体是如何学习你的新手势的,可以简单说明一下,相当于一张 Excel 的 Sheet,你先告诉它手势的名称,再将手势换几个角度拍照,它就会在这个 Sheet 中记录哪些坐标信息是这个手势,以此类推,每行就是一个手势,MediaPipe 其实是构建了一个结构化的数据库。
手势分类
MediaPipe 给出关键点的三维坐标信息后,工作就快结束了,因为后面只需训练一个简单的分类模型即可。我选的是 MLP 多层感知机,不选 CNN 是因为 MediaPipe 已经把理解手势的任务做完了,MLP 只需根据关键点的三维坐标信息,和你事先标注好的手势数据进行比对分类,最终将语义结果返回给用户。这就是完整的流程了。
总述
这个项目表面上虽然流程是简单的,但在细节上还是需要处理一下的,比如复杂的光照场景就可能导致 OpenCV 把手部位置提取错了、数据噪声、数据增强等等问题。言而总之,总而言之,这是个简单的概述,现在是 Vibe Coding 的时代,AI 分分钟就能搓出来,各位看官读个乐呵就行 ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄
版权声明
本文采用 CC BY-NC-SA 4.0 协议进行许可
作者:Andy Jin | 来源:Modern Blog
本文链接:https://blog.andyjin.website/2026/07/16/20260716001/
未经许可,禁止商业转载,转载请注明出处。
评论区