ดังนั้น เพื่อให้การแสดงผลสะท้อนถึงสถานะการตรวจจับข้อต่อ เราจะลองใช้สีในการจำแนก เช่น สีเขียวหมายถึงจับข้อต่อได้ (Tracked) และสีแดงคือตรวจจับไม่ได้แต่พอคาดการณ์ได้ (Inferrred) และถ้าตรวจจับไม่ได้เลย (NotTracked) ก็จะไม่วาดเส้นครับ
ผลลัพธ์ก็ประมาณนี้ สังเกตว่าช่วงขวาเป็นสีแดงเกือบทั้งหมด เพราะกล้องอยู่สูงและผมยืนใกล้กล้องมากครับ
โค้ด C# เปลี่ยนเฉพาะส่วนของฟังก์ชันที่ใช้ในการวาดเส้นครับ
//drawing color Brush brushRed = new SolidColorBrush(Colors.Red); Brush brushGreen = new SolidColorBrush(Colors.Green); //method to draw a line between joints void drawLine(Joint j1, Joint j2) { //if any joint is not tracked if (j1.TrackingState == JointTrackingState.NotTracked || j2.TrackingState == JointTrackingState.NotTracked) { //do not draw return; } //line properties Line bone = new Line(); //line thickness bone.StrokeThickness = 5; //if any joint is inferred if (j1.TrackingState == JointTrackingState.Inferred || j2.TrackingState == JointTrackingState.Inferred) { //set color to red bone.Stroke = brushRed; } else if (j1.TrackingState == JointTrackingState.Tracked && j2.TrackingState == JointTrackingState.Tracked) { //both joints are tracked, set color to green bone.Stroke = brushGreen; } //map joint position to display location //starting point ColorImagePoint j1p = myKinect.CoordinateMapper.MapSkeletonPointToColorPoint(j1.Position, ColorImageFormat.RgbResolution640x480Fps30); bone.X1 = j1p.X; bone.Y1 = j1p.Y; //ending point ColorImagePoint j2p = myKinect.CoordinateMapper.MapSkeletonPointToColorPoint(j2.Position, ColorImageFormat.RgbResolution640x480Fps30); bone.X2 = j2p.X; bone.Y2 = j2p.Y; //add line to canvas skeletonCanvas.Children.Add(bone); }
No comments:
Post a Comment