Skip to content

Instantly share code, notes, and snippets.

@chribben
Created February 10, 2013 20:29
Show Gist options
  • Save chribben/4750940 to your computer and use it in GitHub Desktop.
Save chribben/4750940 to your computer and use it in GitHub Desktop.
[STAThread]
static void Main()
{
_nui = new Runtime();
var app = new Application();
var window = new Window();
InitializeNui(); //Initializing the Runtime object and opening video streams
CreateGUI(window); //Setting up a canvas to hold the RGB video and the image attached to the hand of captured person
var skeletonFrameReadyObservable = Observable.FromEventPattern(_nui, "SkeletonFrameReady");
var trackedSkeletons = from ev in skeletonFrameReadyObservable
from skel in ev.EventArgs.SkeletonFrame.Skeletons
where skel.TrackingState == SkeletonTrackingState.Tracked
select skel;
var rightHandPos = trackedSkeletons.ObserveOnDispatcher().Select(s => getDisplayPosition(s.Joints[JointID.HandRight]));
rightHandPos.ObserveOnDispatcher().Subscribe(pos =>
{
_image.SetValue(Canvas.TopProperty, pos.Y);
_image.SetValue(Canvas.LeftProperty, pos.X);
Console.WriteLine(pos.X + ", " + pos.Y);
});
var videoFrameReadyObservable = Observable.FromEventPattern(_nui, "VideoFrameReady");
videoFrameReadyObservable.ObserveOnDispatcher().Subscribe(evPattern =>
{
PlanarImage Image = evPattern.EventArgs.ImageFrame.Image;
_video.Source = BitmapSource.Create(Image.Width, Image.Height, 96, 96, PixelFormats.Bgr32, null, Image.Bits, Image.Width * Image.BytesPerPixel);
});
app.Run(window);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment