Open source Kinect gesture recognition project, Kinect DTW


Seems like we're on a Gesture recording theme this week so far... Today's project provides another look at recognizing and recording gestures with the Kinect for Windows SDK. In today's we get the source to the main library too, so we can see just how the magic is done...

Kinect SDK Dynamic Time Warping (DTW) Gesture Recognition

This project allows developers to include fast, reliable and highly customizable gesture recognition in Microsoft Kinect SDK C# projects. It uses skeletal tracking and currently supports 2D vectors.

Included is a gesture recorder, recognizer and sample gestures. You can save your gestures to file and we'd love it if you shared your gestures with the community - share and share alike!

This project is currently in setup mode and only available to project coordinators and developers. Once you have finished setting up your project you can publish it to make it available to all CodePlex visitors.

I would really love it if you share the gestures you make, as well as providing feedback on the best parameter settings you have found. I'm also keen for others to improve the project, so please feel free to contribute.

You can use this code or any original or modified portion of it in any project that you like. We only ask that you keep the authors' names in the copyright notice because a lot of thought and effort went into this.

For additional information, please check out

KinectDTW - open source Kinect gesture recognition project released

This evening I published to Codeplex the gesture recording and recognition project I’ve been working on. Massive shout out to Rhemyst for doing most of the thinking on this. Grab it here:

Key features:

  • Gesture recording
  • Gesture recognition
  • Save gestures to file
  • Tweakable parameters for fine control of how the recognizer works
  • Works out of the box - just run the sample app
  • Source code available too if you want to make your own gestures

Please try this out and if you find it useful I'd love you to contribute to the project. There are a hundred things I can think of that could be done better but this is a great starting point for anyone who is interested in vector-based recognition with the Kinect.

Project Information URL:

Project Download URL:

Project Source URL:


/// <summary>
/// Recognize gesture in the given sequence.
/// It will always assume that the gesture ends on the last observation of that sequence.
/// If the distance between the last observations of each sequence is too great, or if the overall DTW distance between the two sequence is too great, no gesture will be recognized.
/// </summary>
/// <param name="seq">The sequence to recognise</param>
/// <returns>The recognised gesture name</returns>
public string Recognize(ArrayList seq)
     double minDist = double.PositiveInfinity;
     string classification = "__UNKNOWN";
     for (int i = 0; i < _sequences.Count; i++)
         var example = (ArrayList) _sequences[i];
         ////Debug.WriteLine(Dist2((double[]) seq[seq.Count - 1], (double[]) example[example.Count - 1]));
         if (Dist2((double[]) seq[seq.Count - 1], (double[]) example[example.Count - 1]) < _firstThreshold)
             double d = Dtw(seq, example) / example.Count;
             if (d < minDist)
                 minDist = d;
                 classification = (string)_labels[i];

     return (minDist < _globalThreshold ? classification : "__UNKNOWN") + " " /*+minDist.ToString()*/;


Contact Information:

The Discussion

  • User profile image

    One thing I've noticed is the application does not handle multiple gestures for the same name (i.e. multiple samples for the same gesture). The best way I've found around this (with out having to rewrite a lot of source) is to simply make separate files with the gestures, then join all of the files together in one big file. The only thing is before you join them, you must go in to any file (that isn't root) and add a 1, 2, 3 etc etc after each gesture so they are separate.

    Then, in the code, simply set a switch case statement based on the string (so right hand left and right hand left 1 would be the same statement).

  • User profile image

    The reason I mentioned multiple gestures with the same name is because I think of the android equivalent where you can name a gesture the same and have multiple gestures that mimic the overall gesture.

  • User profile image

    how could I analyze the gesture?

  • User profile image

    Hi Guys,

    I am a new comer in the world of kinect. I've already installed WinSDK and WisStudio C++, namely I have got everything for some dummy project with kinect and all works OK. My purpose is to create an application which can sense the human hand raised upward and at the same time it can sense a sound coming from slapping your raised hand fingers. The point is here, just this idea is part of my lab project (turning on/off the lamp with hand gestures and I want to use kinect sensor). Could you give me some basic suggestions/directions to implement it and one more thing I need some source codes related to my project.

    Thanks in advance for everybody who will be helping me, I'll appreciate all comments.

  • User profile image
    help me

    i'm korean
    i'm korea university student major in Computer Science.
    this semaster, my team project is making kinect application.
    plz help me and give me useful source plz plz plz plz
    for example. easy game or easy program or easy advice or tip.
    i love you. give me e-mail

  • User profile image

    It would help greatly if you could post where you would put that last bit of code to make it work correctly

  • User profile image

    @cgm: All the code can be found on the CodePlex Project,

  • User profile image

    Hey, I have a project to do where i am creating an image album, this project here would be very useful for me. However what code do i need to take in order for my project just to be able to recognize a gesture from a single file, i dont need anything else

  • User profile image

    Can anyone please tellme what the numbers in output file suggest. As an example
    @Left hand wave

  • User profile image
    Isabelle Guyon

    CHALEARN Gesture Challenge
    First Kinect Demonstration Competition at CVPR 2012, June 2012
    $10,000 in prizes and up to $100,000 in licensing (see rules)

    We invite the submission of demonstration proposals for a demonstration competition of applications of gesture recognition with KinectTM. At the site of the CVPR workshop on gesture recognition, the participants will demonstrate their system and be judged by a panel of experts, who will grade them according to pre-defined criteria:
    - relevance (an application of gesture recognition using KinectTM NOT limited to one-shot-learning like the gesture challenge),
    - usefulness (or, if it is a game, playfulness),
    - technical or scientific contribution,
    - novelty/originality, and
    - quality of implementation.

    First prize: USD 5000,
    Second prize: USD 3000,
    Third prize: USD 2000.

    The prizes are donated by Microsoft (see the rules for the "qualitative evaluation" of the gesture challenge To earn prizes, the participants must use a KinectTM device and the Microsoft SDK. Microsoft may also offer to license the technology of the winners for up to USD 100,000.

    > Register: The demonstrators should subscribe to our Google group gesturechallenge.
    > Guidelines: The demonstrators should send a 2-page demonstration proposal in the CVPR format (see author's guidelines). They should take into account the evaluation criteria. Alternatively, the demonstrators may send a full length paper (see the call for paper), but the deadline is sooner.
    > Submission: The proposals should be emailed to
    > Deadline: Tuesday May 1, 2012.

    This project in sponsored in part by NSF, Pascal2, Microsoft, and Texas Instrument.

  • User profile image

    Can I check with you , where can I download the reference Microsoft research kinectmuc ?

  • User profile image

    has this app been updated to v1 sdk?

  • User profile image

    @lantonis:In checking the project site,, no it doesn't look like it has been. But the source is there for an enterprising updater...

  • User profile image

    @lantonis: Yes, now it has, by the community. Check out Updates for Kinect DTW Gesture Recognition framework using new SDK 1.0 

    Also of note is that a patch was uploaded to the project by someone else in the community that updates it to v1,

  • User profile image

    I need some example code of how to use this library in my proyect to recognize a swip gesture and react in consecuence
    Where can i find it?

  • User profile image

    Check this site out which offers free Gesture Recognition API to use with your kinect

Conversation locked

This conversation has been locked by the site admins. No new comments can be made.