Exemple #1
0
        public async Task <WisTResponse> CheckAsync(LoginInfo userInfo)
        {
            WisTResponse response;
            var          detectConfig            = _configuration["FaceClassifierPath"];
            var          recognizeConfig         = _configuration["TransistRateCoefficient"];
            var          rootPath                = _hostingEnvironemnt.ContentRootPath;
            var          transistRateCoefficient = double.Parse(recognizeConfig, new NumberFormatInfo {
                NumberDecimalSeparator = "."
            });
            var pathToHaar = Path.Combine(rootPath, detectConfig);

            Bitmap image;

            using (var memoryStream = new MemoryStream())
            {
                await userInfo.Photo.CopyToAsync(memoryStream);

                image = new Bitmap(Image.FromStream(memoryStream));
            }
            var _prjPath = Directory.GetParent(Directory.GetCurrentDirectory()).FullName;

            FaceImage userFace;

            try
            {
                userFace = new FaceImage(image, pathToHaar);
                var recognizer = new Recognizer.Identifier.Recognizer(_labelRepo, transistRateCoefficient);

                IIdentifier usersId = recognizer.GetIdentity(userFace);
                if (usersId.IdentifingCode != -1)
                {
                    response          = WisTResponse.Recognized;
                    response.UserName = _labelRepo.Get(usersId).Name;
                }
                else
                {
                    response = WisTResponse.NotRegistered;
                }
            }
            catch (UndetectedFaceException)
            {
                response = WisTResponse.NotDetectedFace;
            }
            return(response);
        }