Kinect开发教程五:OpenNI获取人体骨架

本文是Kinect开发教程系列的第五篇,主要介绍如何利用OpenNI获取人体骨架信息。通过注册回调函数,包括NewUser、LostUser、CalibrationStart和CalibrationEnd,结合SkeletonCapability和PoseDetectionCapability,实现从人物出现、姿势检测到骨架跟踪的完整流程。文章详细阐述了关节定义、标定过程、关节位置和方向的获取,并提供了将3D坐标转换为屏幕坐标的转换方法。
摘要由CSDN通过智能技术生成

    临近毕业,小斤最近一直忙活着相关事宜,教程这边也搁浅了一阵。前几篇教程介绍了OpenNI的一些基本范例以及手势应用,但如果光用Kinect识别一些手势,总有点杀鸡用牛刀的感觉。在大部分体感应用中,获取骨架的步骤都不可缺少,这也是小斤一直想写的专题。

    好了,废话不多说了,让我们进入正题吧!

    在OpenNI库的enum XnSkeletonJoint中,定义了24个人体的关节,如下:

  XN_SKEL_HEAD          = 1,    XN_SKEL_NECK            = 2,
  XN_SKEL_TORSO         = 3,    XN_SKEL_WAIST           = 4,
  XN_SKEL_LEFT_COLLAR        = 5,    XN_SKEL_LEFT_SHOULDER        = 6,
  XN_SKEL_LEFT_ELBOW        = 7,  XN_SKEL_LEFT_WRIST          = 8,
  XN_SKEL_LEFT_HAND          = 9,    XN_SKEL_LEFT_FINGERTIP    =10,
  XN_SKEL_RIGHT_COLLAR    =11,    XN_SKEL_RIGHT_SHOULDER    =12,
  XN_SKEL_RIGHT_ELBOW        =13,  XN_SKEL_RIGHT_WRIST          =14,
  XN_SKEL_RIGHT_HAND      =15,    XN_SKEL_RIGHT_FINGERTIP    =16,
  XN_SKEL_LEFT_HIP          =17,    XN_SKEL_LEFT_KNEE            =18,
  XN_SKEL_LEFT_ANKLE        =19,  XN_SKEL_LEFT_FOOT            =20,
  XN_SKEL_RIGHT_HIP          =21,    XN_SKEL_RIGHT_KNEE          =22,
  XN_SKEL_RIGHT_ANKLE        =23,    XN_SKEL_RIGHT_FOOT          =24   

    小斤试下来,目前可使用的有14个关节,如下图:

    先上代码:

#include <stdlib.h>
#include <iostream>
#include <vector>

#include <XnCppWrapper.h>
#include <XnModuleCppInterface.h> 
#include "cv.h"
#include "highgui.h"

using namespace std;
using namespace cv;

//#pragma comment (lib,"cv210")
//#pragma comment (lib,"cxcore210")
//#pragma comment (lib,"highgui210")
//#pragma comment (lib,"OpenNI")

//【1】
xn::UserGenerator userGenerator;
xn::DepthGenerator de
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值