很多童鞋都在做kinect的手势识别,本人也基于kinect实现手势的跟踪和识别,跟踪过程比较稳定,几乎与OpenNI提供的SDK相当。手势的识别由于距离的原因尚不稳定,特别是当距离超过超过2.5米时。现在将手势跟踪主要代码提出来供大家参考!
XnPoint3D HandTrack(U16 *depIn, XnPoint3D handPrev)
{
XnPoint3D handCurr = handPrev;
XnPoint3D hArmPoint = {0};
XnPoint3D hFingerPoint = {0};
XnPoint3D handPred = {0};
static int handLostCnt = 0;
extern int trackFrmCnt;
if(handTrackCnt == 0)
{
handDiff.X = handDiff.Y = handDiff.Z = 0;
if(!handDiffMap)
handDiffMap = cvCreateImage(cvSize(640,480) ,IPL_DEPTH_8U, 1);
}
handTrackCnt ++;
handPred = HandPrediction(depIn,hand