コード例 #1
0
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            Pattern.PatternArguments pattern = Pattern.PatternArguments.ReadFromFile(App.PatternPath);
            drawWindow = new PatternDrawWindow(pattern, App.Speed);
            drawWindow.Show();
            double maxx = drawWindow.DrawingParamters.Points.Max(p => p.X) + PatternDrawWindow.OFFSET_X;
            double maxy = drawWindow.DrawingParamters.Points.Max(p => p.Y) + PatternDrawWindow.OFFSET_Y + 50;

            double screenX = Screen.PrimaryScreen.WorkingArea.Width / 2;
            double screenY = Screen.PrimaryScreen.WorkingArea.Height / 2;
            double offsetY = Screen.PrimaryScreen.Bounds.Y;

            if (maxx > screenX || maxy > screenY)
            {
                Close();
                return;
            }
            drawWindow.Top    = offsetY + 50;
            drawWindow.Left   = (screenX - maxx) / 2;
            drawWindow.Width  = maxx;
            drawWindow.Height = maxy;
            Left = Math.Max(drawWindow.Left - ActualWidth - 10, 0);
            Top  = drawWindow.Top;

            drawWindow.MoveBegin += OnMoveBegin;
            drawWindow.MoveEnded += OnMoveEnded;

            resultWindow = new CamerPreviewWindow();
            resultWindow.Show();
            resultWindow.Left = Left;
            resultWindow.Top  = Top + Math.Max(ActualHeight, maxy) + 10;

            detector    = new CascadeDetector(FACE_FILE, EYE_FILE);
            cameraFrame = new Mat();
            grayFrame   = new Mat();
            try
            {
                if (App.VideoPath == null)
                {
                    capture = new VideoCapture();
                }
                else
                {
                    capture = new VideoCapture(App.VideoPath);
                }
                capture.FlipHorizontal = true;
                capture.ImageGrabbed  += OnFrameCaptured;
                capture.Grab();
            }
            catch (Exception excpt)
            {
                System.Windows.MessageBox.Show(excpt.Message);
            }


            canv_left.DataBuffer  = leftData;
            canv_right.DataBuffer = rightData;
            canv_lt.DataBuffer    = leftTopData;
            canv_rt.DataBuffer    = rightTopData;

            btn_start.Click += (_sender, _e) =>
            {
                string content = btn_start.Content as string;
                if (content == "开始")
                {
                    drawWindow.Start();
                    btn_start.IsEnabled = false;
                }
            };
        }
コード例 #2
0
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            drawWindow = new PatternDrawWindow(App.Speed);
            drawWindow.Show();

            double maxx = PatternDrawWindow.OFFSET_X;
            double maxy = PatternDrawWindow.OFFSET_Y + 50;

            double screenX = Screen.PrimaryScreen.WorkingArea.Width / 2;
            double screenY = Screen.PrimaryScreen.WorkingArea.Height / 2;
            double offsetY = Screen.PrimaryScreen.Bounds.Y;

            if (maxx > screenX || maxy > screenY)
            {
                Close();
                return;
            }
            drawWindow.Top    = offsetY + 50;
            drawWindow.Left   = (screenX - maxx) / 2;
            drawWindow.Width  = maxx;
            drawWindow.Height = maxy;
            Left = Math.Max(drawWindow.Left - ActualWidth - 10, 0);
            Top  = drawWindow.Top;

            drawWindow.MoveBegin += OnMoveBegin;
            drawWindow.MoveEnded += OnMoveEnded;

            resultWindow = new CamerPreviewWindow();
            resultWindow.Show();
            resultWindow.Left = Left;
            resultWindow.Top  = Top + Math.Max(ActualHeight, maxy) + 10;

            detector    = new CascadeDetector(FACE_FILE, EYE_FILE);
            cameraFrame = new Mat();
            grayFrame   = new Mat();
            try
            {
                capture = new VideoCapture();
                if (App.VideoPath != null)
                {
                    captureOutput = new VideoWriter(
                        App.VideoPath,
                        App.FrameRate,
                        new System.Drawing.Size((int)capture.GetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameWidth), (int)capture.GetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameHeight)),
                        true);
                }
                capture.FlipHorizontal = true;
                capture.ImageGrabbed  += OnFrameCaptured;
                capture.Grab();
            }
            catch (Exception excpt)
            {
                System.Windows.MessageBox.Show(excpt.Message);
            }


            canv_left.DataBuffer  = leftData;
            canv_right.DataBuffer = rightData;
            canv_lt.DataBuffer    = leftTopData;
            canv_rt.DataBuffer    = rightTopData;

            drawWindow.Width  = 600;
            drawWindow.Height = 600;

            btn_start.Click += (_sender, _e) =>
            {
                string content = btn_start.Content as string;
                if (content == "开始")
                {
                    drawWindow.Start();
                    btn_start.IsEnabled = false;
                }
            };
        }