//action on every frame. public void OnFrame(object sender, FrameEventArgs args) { // Get the most recent frame and report some basic information Frame frame = args.frame; if (copyflag) { nowHand0.CopyFrom(frame.Hands[0]); copyflag = false; } //add virtual hand if (vhand_flag) { VirtualHand.AddHand(ref frame, vhand); } //works when 2 hands in the hans pool if (frame.Hands.Count == 2) { HKD0.Load(frame.Hands[0]); HKD1.Load(frame.Hands[1]); HKD0.Transform(HKD0.GetRIMatrix()); //the same side then just transform if (frame.Hands[0].IsLeft == frame.Hands[1].IsLeft) { HKD1.Transform(HKD1.GetRIMatrix()); } //not the same then transform after mirror on x-axis else { HKD1.Transform(HKD1.MirrorXRI()); } Normalized.Hand_Normalized(ref HKD0, ref HKD1); Compare_Method(); changeflag = true; Thread.Sleep(10); } else if (frame.Hands.Count > 2) { changeflag = false; answer = "To many hands!!!"; clear(); } else { changeflag = false; answer = "Need " + (2 - frame.Hands.Count).ToString() + " more hands"; clear(); } }
public void OnFrame(object sender, FrameEventArgs args) { // Get the most recent frame and report some basic information Frame frame = args.frame; if (frame.Hands.Count == 2) { answer = "对比结果:" + "\n"; HKD0.Load(frame.Hands[0]); HKD1.Load(frame.Hands[1]); HKD0.Transform(HKD0.GetRIMatrix()); if (frame.Hands[0].IsLeft == frame.Hands[1].IsLeft) { HKD1.Transform(HKD1.GetRIMatrix()); } else { HKD1.Transform(HKD1.MirrorXRI()); } Normalized.Hand_Normalized(ref HKD0, ref HKD1); Compare_Method(); } //调试分支 /* * else if (frame.Hands.Count == 1) * { * HKD0.Load(frame.Hands[0]); * HKD1.Load(frame.Hands[0]); * answer = "单手归零测试:\n"; * Compare_Method(); * } */ else if (frame.Hands.Count > 2) { answer = "To many hands!!!"; } else { answer = "Need " + (2 - frame.Hands.Count).ToString() + " more hands"; } }