OpenCV-Python实战(25)——基于深度传感器与凸性分析打造实时手势识别系统 OpenCV-Python实战(25)——基于深度传感器与凸性分析打造实时手势识别系统0. 前言1. 本节目标2. 规划应用2. 搭建应用程序2.1 访问 Kinect 3D 传感器2.2 使用兼容 OpenNI 的传感器2.3 运行应用程序和主函数例程3. 实时跟踪手势4. 手部区域分割4.1 寻找图像中心区域的最显著深度值4.2 应用形态学闭运算进行平滑处理4.3 在分割掩码中查找连通分量5. 手部形状分析5.1 确定分割后手部区域的轮廓5.2 查找轮廓区域的凸包5.3 找到凸包的凸性缺陷6. 执行手势识别6.1 区分凸性缺陷的不同成因6.2 根据伸展手指数对手势进行分类小结系列链接0. 前言本节的目的是开发一个应用程序,利用深度传感器(例如Microsoft Kinect 3D传感器或ASUS Xtion传感器)的输出,实时检测并跟踪简单的手势。该应用程序将分析每一帧捕获的图像,以执行以下任务:手部区域分割:通过分析Kinect传感器输出的深度图,在每一帧中提取用户的手部区域。这通过阈值分割、应用形态学操作以及查找连通分量来实现手部形状分析:通过确定轮廓、凸包和凸性缺陷来分析分割得到的手部区域的形状手势识别:根据手部轮廓的凸性缺陷来确定伸展手指的数量,并据此对手势进行分类(没有伸展手指对应拳头,五根手指伸展对应张开的手)手势识别在计算机科学中一直是一个非常热门的话题。这不仅因为它使人类能够与机器进行交流(即人机交互 (Human-Machine Interaction,HMI)),而且也是机器开始理解人类肢体语言的第一步。借助Microsoft Kinect或Asus Xtion等传感器,以及OpenKinect和OpenNI等开源软件,我们可以很轻松的入门这一领域。我们在本节中实现的算法的优点在于,它能够很好地处理多种手势,同时又足够简单,可以在普通笔记本电脑上实时运行。此外,如果我们需要,还可以轻松地扩展它,以纳入更复杂的手部姿态估计。