Introduction to Kinect for Windows SDK

Let me first introduce you to the SDK before we start developing our first Kinect application later this week from scratch.
This is the start of the first tutorial, we’ll start coding later this week.

What you will find in this post –

NOTE – This is written based on SDK version 1.7

Building blocks

First things first, let’s review what data we can access.
As you can see I divided it in two types of datastreams – Data streams & Recognition Stream.

  • Data streams are basicly the streams that the sensor can capture with its sensors like Color with the camera, Depth with the IR Emitter & receiver, etc.
  • Recognition streams are those who rely on the ones below them and process the data for example if you want to use FaceTracking you’ll need to enable Color, Depth and Skeleton Tracking in order to enable FaceTracking.


Heart of the SDK

You can find everything about Kinect in the namespace Microsoft.Kinect. The heart of the SDK are the classes below if you ask me since you’ll be using them the most.

KinectSensor is an object that represents a Kinect sensor. We can enable color/depth/skeletal tracking for a sensor, change the angle with ElevationAngle, check what it’s status is and if it is running, etc.

Stream overview

(Thanks to Renaud Dumont)

As you can see each sensor has three streams, Color / Depth / Skeleton, each respresented by an object ColorImageStream / DepthImageStream / SkeletonStream that will give you Frames with the data in it when you call the OpenNextFrame -method.
Color & depth are quite the same since a frame has a Width, Height, BytesPerPixel & PixelDataLength while a SkeletonFrame has a TrackingMode & SkeletonArrayLength.

You can see the full main classes below –
Class overview v1.7

Status of a sensor

Every KinectSensor-object has a status, called KinectStatus, indicating in what state your sensor is.
For example if you want to interact with it and your device is still initiliazing will result in errors and failure, we don’t want that. As well as UX where we can let the user know whether the sensor is connected and ready or not, etc.
You can also copy the data from your frame to a byte[] or a

Here’s an overview of all states –
Kinect Status

Out-of-the-box toolkits

Here’s an overview of the toolkits that are available with the Developer Toolkit Browser v1.7.0.

  • Microsoft.Kinect.Toolkit - A component that provides you the KinectSensorChooser-object that helps you manage your Kinect sensor, states, notify the users in the UI, etc.
    More information on MSDN
  • Microsoft.Kinect.Toolkit.Controls - WPF controls for Kinect interactions
    More information on MSDN
  • Microsoft.Kinect.Toolkit.Fusion - Helps you build applications with Kinect Fusion
    More info on MSDN
  • Microsoft.Kinect.Toolkit.FaceTracking - A wrapper API for the native FaceTracking library. As the face tracking library is NOT a part of the SDK itself, but distributed through the toolkit, you must use this component in your C# or VB application to access face tracking features
    More information on MSDN
  • Microsoft.Kinect.Toolkit.Interaction - A compontent that helps you build applications with interaction (also know as KinectInteraction)
    More information about the architecture, controls, managed API, concepts

I won’t use one of these toolkits in my first tutorial because I think that it’s essential that you know how everything works before you let the toolkits do it for you.

You can use them by adding a reference to the DLL in your filesystem or by installing the project by using the Toolkit browser.


Location of the DLLs

Install toolkit

Install a toolkit

This entry was posted in SDK and tagged . Bookmark the permalink.

7 Responses to Introduction to Kinect for Windows SDK

  1. Keep up the good work!

  2. Pingback: Tutorial – Kinect Television | Kinecting for Windows

  3. Pingback: Tutorial – Kinect Television | Internship OKC

  4. Youness says:

    Thank you very much for the tutorial, it gives the essential tools before starting any projects, which is the set of classes provide by the SDK.
    I’m working on a project, the main of it is to track a user, and retrieve the position of each joints in the way to control a Robot and let him do the same movements, I’ll use in this project, a platform OMAP-L138. Could you please share a tutorial which describe the basics of Skeleton Tracking in C++ or C sharp.
    Thank you very much.

    • TomKerkhove says:


      Well I recommend you look into the Skeleton samples in the Kinect Toolkit Browser. They cover C++ & C# if I’m not wrong! If you have questions about c# –>

      (Currently too busy to make a tutorial on my own sorry :()

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>