鉴于网上的教程都是四五年前的东西,还必须借用姿势检测触发骨骼校正才能进行骨骼数据的采集,非常的麻烦,所以我进行了代码的简化,并且根据百度文库中的一篇文章中的黑科技实现了不需要校正直接进行骨骼采集.
/*
* SkeletonViewer.cpp
*/
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <vector>
#include <string>
#include <XnCppWrapper.h>//OpenNI的文件头
#include <XnModuleCppInterface.h>
#include "cv.h"
#include "highgui.h"
using namespace std;
using namespace cv;
// Generator
xn::UserGenerator userGenerator;//检测新User的出现或离开,注册回调函数的方式,一旦其检测到了动静(如人物出现),那么相应的回调函数就会被调用
xn::DepthGenerator depthGenerator;//深度图像
xn::ImageGenerator imageGenerator;//彩色图像
/*
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