前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenCV手部关键点检测(手势识别)代码示例

OpenCV手部关键点检测(手势识别)代码示例

作者头像
CV君
发布2019-12-27 16:22:10
4.8K0
发布2019-12-27 16:22:10
举报

前几日分享了learnopencv.com博主Satya Mallick发表的关于OpenCV Mask RCNN实例分割的博文(详见:OpenCV4.0 Mask RCNN 实例分割示例 C++/Python实现),展示了OpenCV作为DNN推断工具的简单用法。 昨日Satya Mallick又发表了使用OpenCV调用OpenPose工程中的手部关键点检测(hand pose estimation)模型的文章,对于想要使用手部关键点检测做手势识别、手语识别、抽烟检测等工程开发的朋友来说这是一个非常简单的上手教程。 先来看看作者发布的视频效果:

在大部分情况下还是不错的,但也出现了少数帧关键点跳变的情况。

算法思想 该文中作者使用的算法模型是CMU Perceptual Computing Lab开源的集合人体、人脸、手部关键点检测的开源库OpenPose,其中手部关键点检测(Hand Keypoint detector)算法来自CVPR2017的论文《Hand Keypoint Detection in Single Images using Multiview Bootstrapping》。 人手在3D空间由于视角不同、灵活的精细动作等原因,较难得到精确标注的数据集。在该论文中,作者提出了一种称之为Multiview Bootstrapping的手部关键点检测迭代改进算法,实现了具有较高精度的检测算法。

如上图所示,作者提出首先使用少量标注的含有人手关键点的数据集训练Convolutional Pose Machines神经网络,使用31个不同视角的高清摄像头拍摄人手,用上述检测模型初步检测关键点,将这些关键点根据摄像机的位姿构建三角(triangulation),得到关键点的3D位置,再将计算得到的3D点位置重投影到每一幅不同视角的2D图像,再使用这些2D图像和关键点标注训练检测模型网络,经过几次迭代,即可以得到较为精确的手部关键点检测模型。 原论文中提出的模型可生成22个关键点,其中21个点是人手部的,第22个点代表着背景。下图展示了人手部的21个关键点位置。

OpenCV手部关键点检测主要流程 1)下载模型 运行开源工程中的getModels.sh下载模型,

或者直接在网址: http://posefs1.perception.cs.cmu.edu/OpenPose/models/hand/pose_iter_102000.caffemodel 下载。将模型放到“hand/”文件夹下。 2)加载模型和图像 使用OpenCV DNN函数readNetFromCaffe函数加载模型权重。

3)推断预测 blobFromImage将图像转为blob,forward函数实现网络推断。

4)获取关键点精确位置并显示

上述网络计算的结果是22个矩阵,每个矩阵代表某个特定关键点最可能出现在图像中哪个位置的热图,需要调用minmaxLoc函数找到精确位置,进而将其画出并标注序号。

5)画出骨架

视频效果:

从视频中可以看出关键点有抖动,且有部分帧出现关键点跳变,如何让其更稳定呢?

在该博文评论区,某大佬提出使用Savgol滤波器对数据进行平滑可以得到较满意的结果。 看看效果如何:

是不是立刻感觉好了很多?

关键点平滑代码: https://stackoverflow.com/questions/52450681/how-can-i-use-smoothing-techniques-to-remove-jitter-in-pose-estimation/

原博文地址: https://www.learnopencv.com/hand-keypoint-detection-using-deep-learning-and-opencv/ 代码地址: https://github.com/spmallick/learnopencv/tree/master/HandPose

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我爱计算机视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档