public void Init(ProfileViewModel vm)
        {
            _vm = vm;

            var refImgs = _testImageRepository.GetReferenceImages(_authenticationService.User);

            _vm.ReferenceImgs    = refImgs.Select(f => f.Img.ToBitmapImage()).ToObservableCollection();
            _vm.Username         = _authenticationService.User.Username;
            _vm.AlgorithmStarted = _moduleService.Alghorithm.Started;
            RestartInit.RaiseCanExecuteChanged();
        }
        private bool ShouldStartInitFaceStep()
        {
            var user = _authenticationService.User;

            if (_testImageRepository.GetReferenceImages(user).Count >= ProfileInitService.MinImages)
            {
                return(false);
            }

            return(true);
        }
Пример #3
0
        private (bool faceDetected, bool faceRecognized) CompareFaces(Mat frame, User user, Rect[] rects)
        {
            bool faceDetected = false, faceRecognized = false;

            if (rects.Length > 0)
            {
                var ph = _testImageRepository.GetReferenceImages(user);

                #region DEV_MODE

#if DEV_MODE
                Application.Current.Dispatcher.Invoke(() =>
                {
                    Cv2.ImShow("1", ph.First().Img);
                    Cv2.ImShow("2", frame);
                });
#endif

                #endregion

                var excluded = ExcludeFaces(frame, rects);

                foreach (var mat in excluded)
                {
                    faceRecognized = _faceRecognition.CompareFaces(
                        ph.First(i => i.HorizontalHeadRotation == HeadRotation.Front).Img, null, mat, null);

                    if (faceRecognized)
                    {
                        break;
                    }

                    faceRecognized = _faceRecognition.CompareFaces(
                        ph.First(i => i.HorizontalHeadRotation == HeadRotation.Right).Img, null, mat, null);

                    if (faceRecognized)
                    {
                        break;
                    }

                    faceRecognized = _faceRecognition.CompareFaces(
                        ph.First(i => i.HorizontalHeadRotation == HeadRotation.Left).Img, null, mat, null);
                }

                faceDetected = true;
            }

            Log.Logger.Debug($"Face detected: {faceDetected} Face recognized: {faceRecognized}");

            return(faceDetected, faceRecognized);
        }
        public void GetReferenceImgs_returns_only_referenceImgs()
        {
            var t1 = CreateTestImage(false);
            var t2 = CreateTestImage(true);
            var t3 = CreateTestImage(true);

            _repository.Add(t1);
            _repository.Add(t2);
            _repository.Add(t3);
            _repository.Count(user).Should().Be(3);


            var result = _repository.GetReferenceImages(user);

            result.Count().Should().Be(2);
            CompareTestImgs(result.First(), t2);
            CompareTestImgs(result.Last(), t3);
        }