示例#1
0
        //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();
            }
        }
示例#2
0
    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";
        }
    }