예제 #1
0
        protected override async void OnContentRendered(EventArgs e)
        {
            base.OnContentRendered(e);

            await foreach (var frame in _cap.CaptureFrames(CancellationToken.None))
            {
                _currentFrame     = frame.Clone();
                var(rects, faces) = _faceDetection.DetectFrontalThenProfileFaces(frame);

                if (rects.Length == 1)
                {
                    //_currentFace = FaceImg.CreateGrayscale(faces.First());
                    Cv2.Rectangle(frame, rects.First(), Scalar.Green);

                    _frames++;
                    if (_frames == 5 && !_stop)
                    {
                        photoBtn_Click(null, null);
                        trainBtn_Click(null, null);
                        trained.Text = _trained.ToString();
                        _frames      = 0;
                    }

                    if (_frames == 2 && _autoPredict)
                    {
                        photoBtn_Click(null, null);
                        predictBtn_Click(null, null);
                        _frames = 0;
                    }
                }


                image.Source = frame.ToBitmapImage();
            }
        }
예제 #2
0
        protected override async void OnContentRendered(EventArgs e)
        {
            base.OnContentRendered(e);


            await foreach (var frame in cap.CaptureFrames(CancellationToken.None))
            {
                var rects = hc.DetectFrontalThenProfileFaces(frame);


                if (rects.Length == 1)
                {
                    var landmarks = SharedFaceRecognitionModel.Model.FaceLandmark(LoadImage(frame)).ToList();
                    if (landmarks.Count > 0)
                    {
                        var fc = frame.Clone();


                        fc = norm.NormalizePosition(fc, rects[0], landmarks);


                        Cv2.Resize(fc, fc, new Size(96, 96));
                        Cv2.ImShow("al", fc);
                    }

                    Cv2.Rectangle(frame, rects[0], Scalar.Green);
                }


                image.Source = frame.ToBitmapImage();
            }
        }