Hey guys have used this site a good few times and find it very helpful, usually I can fix my own problems and just don't like to bug people. However I have just began using the Kinect SDK and have managed to get the depth and color streams displaying in a VS2012 WPF program in an Image.
That was fine, now usually I have used windows forms and have had it fairly easy drawing a rectangle over the image. With a transition to WPF I've had to learn a few things, firstly I swapped the display of the depth stream over to the background of a canvas and was hoping to use the FaceTrackFrame.FaceRect to directly position and proportion a Rectangle object over the face. Sounds simple enough right? Well I have created the rectangle, added it to the canvas 'canvas.Children.Add(rect2);' now my sizing and positioning code is as so
rect2.Width = faceFrame.FaceRect.Width;
rect2.Height = faceFrame.FaceRect.Height;
Canvas.SetLeft(rect2,faceFrame.FaceRect.Left);
Canvas.SetTop(rect2, faceFrame.FaceRect.Top);
Which should really just be drawing the otherwise unseen FaceRect right? however it seems to draw in a slightly off position, the offset isn't consistent as I move around the room when I am at the far right of the resulting depth stream the rectangle is almost correctly positioned however when I am near the center or especially the far left the rectangle is clearly in the wrong place. Please see the image in the link to explain better.
http://tinypic.com/view.php?pic=2zso0tl&s=5I really cannot see what is going on here and would be greatful for some help it has been driving me INSANE!
Regards
Andrew Johnson
(making a robot for a project)
EDIT (fixed, kinda)
Due to the positioning of the cameras the rectangle is only true when overlayed on the colour video stream. So my next question is how would I obtain the correct area on the depth camera stream? That is so that I could cut a rectangle from the video and depth relating to a persons face? I see there is a MapColorFrameToDepthFrame method for converting the whole color frame but cannot see how to use it.