Пример #1
0
        private static void Main(string[] args)
        {
            const int width = 640, height = 360;

            Bebop     bebop = new Bebop();
            Stopwatch sw    = new Stopwatch();

            if (bebop.Connect() == ConnectionStatus.Success)
            {
                bebop.FlatTrim(2000);
                Thread abortThread = new Thread(Run);
                abortThread.Start();

                bebop.StartVideo();

                VideoCapture capture = new VideoCapture(@"./bebop.sdp");
                StreamBuffer buffer  = new StreamBuffer(capture, width, height);

                buffer.AddService(new Canny(width, height));
                buffer.AddService(new UltraSonicService());

                buffer.Start();

                bebop.TakeOff();
                sw.Start();
                while (abortThread.IsAlive)
                {
                    Image <Bgr, byte> frame = buffer.PopLastFrame();
                    if (frame != null)
                    {
                        buffer.TransmitFrame(frame);
                        Vector v = new Vector {
                            Pitch = 1
                        };
                        foreach (Service service in buffer.Services)
                        {
                            Response r = service.GetLatestResult();
                            if (r != null && r.IsValid)
                            {
                                Vector vec = r.Vector.Copy();
                                vec.TimesConstant(r.Confidence / 100);

                                v.Add(vec);
                            }
                        }

                        bebop.Move(v);
                    }
                }

                sw.Stop();
                Console.WriteLine("\n" + sw.ElapsedMilliseconds + "ms");
                buffer.Stop();
                bebop.Land();
                bebop.StopVideo();
                bebop.Disconnect();
            }


            Console.ReadLine();
        }