Skip to main content

Coding for Kinect for Xbox 360

Kinect is an amazing piece of technology. Not only for gaming, it can be used for variety of uses ranging from Healthcare, Security, IT etc. Starting with coding for Kinect seems daunting at first, mainly due to lack of knowledge and starting material.
This article documents my first attempt at coding for Kinect. So basically it’s a beginner level article which introduces us to Kinect. Before you begin, you must ensure that the following pre-requisites have been met.
After you install the Kinect for Windows SDK, plug-in your Kinect to your PC via the USB port and some device drivers should automatically get installed. Finally you should be able to see this screen.

Capture

Now that you have all set up, fire up Visual Studio and create a new WPF project. Add a reference to “Microsoft.Research.Kinect.dll” and “Coding4Fun.Kinect.Wpf.dll”. Next we will create a very basic application which captures Kinect’s RGB Video, Depth Video and try to create a Skeleton out of it. We will basically re-use the code from “Skeletal Viewer” sample that comes with Kinect for Windows SDK.


We will add two images to our XAML window to display the video streams. We will also add a Canvas to display the skeleton that we are tracking. Pretty simple!

<Window x:Class="MyFirstKinectApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" WindowState="Maximized" Loaded="Window_Loaded">
<Grid>
<Image x:Name="VideoFrameImage"
Height="500" Width="500" HorizontalAlignment="Left"
VerticalAlignment="Top"/>
<Canvas x:Name="SkeletalFrameImage"
Height="500" Width="500" HorizontalAlignment="Right"
VerticalAlignment="Top"/>
<Image x:Name="DepthFrameImage"
Height="500" Width="500" HorizontalAlignment="Left"
VerticalAlignment="Bottom"/>
</Grid>
</Window>

Coding4Fun dll helpfully add few extension methods which makes displaying the video streams a breeze. All we have to do is write:


VideoFrameImage.Source = e.ImageFrame.ToBitmapSource();

Next comes calculating and displaying the skeleton in the Canvas. You can follow the source code to see how it is actually being done.


Finally we end up with the following output:

vlcsnap-2011-10-22-19h33m10s33

That’s it! This is our sample sample application. As you move, the skeleton will mirror your movements. All we have to do now is to detect those movements and have some fun!

Comments

Popular posts from this blog

Integrating React with SonarQube using Azure DevOps Pipelines

In the world of automation, code quality is of paramount importance. SonarQube and Azure DevOps are two tools which solve this problem in a continuous and automated way. They play well for a majority of languages and frameworks. However, to make the integration work for React applications still remains a challenge. In this post we will explore how we can integrate a React application to SonarQube using Azure DevOps pipelines to continuously build and assess code quality. Creating the React Application Let's start at the beginning. We will use npx to create a Typescript based React app. Why Typescript? I find it easier to work and more maintainable owing to its strongly-typed behavior. You can very well follow this guide for jsx based applications too. We will use the fantastic Create-React-App (CRA) tool to create a React application called ' sonar-azuredevops-app '. > npx create-react-app sonar-azuredevops-app --template typescript Once the project creation is done, we

Centralized Configuration for .NET Core using Azure Cosmos DB and Narad

We are living in a micro services world. All these services are generally hosted in Docker container which are ephemeral. Moreover these service need to start themselves up, talk to each other, etc. All this needs configuration and there are many commercially available configuration providers like Spring Cloud Config Server, Consul etc. These are excellent tools which provide a lot more functionality than just storing configuration data. However all these have a weakness - they have a single point of failure - their storage mechanism be it a file system, database etc. There are ways to work around those but if you want a really simple place to store configuration values and at the same time make it highly available, with guaranteed global availability and millisecond reads, what can be a better tool than Azure Cosmos DB! So I set forth on this journey for ASP.NET Core projects to talk to Cosmos DB to retrieve their configuration data. For inspiration I looked at Steeltoe Con

Proud to be a Bihari?

After nearly an year, this December I had a chance to visit Bihar. My visits normally consist of resting in my home in Patna and occasional visits to my uncle's place. But this time it was different. I had to go to Gaya to attend my cousin sister's marriage ceremony. Stepping out of Patna made me question - Am I really proud to be a Bihari? Patna is like any other city in India, struggling with pollution, traffic jams, crime, etc. Being snuggled in my bed in Patna had made me forget the reality of what Bihar really is; after all its been nearly 10 years since I had traveled to any town outside of Patna in Bihar. So, the illusion was broken the moment my uncle's brand new Maruti A-Star moved out of outskirts of Patna, to what is supposedly the "National Highway". If you haven't guessed it already, its an apology of a road.