Ejemplo n.º 1
0
        public IHttpActionResult Recognition(DetectionViewModel detectionViewModel)
        {
            var faceBitmap     = detectionViewModel.GetImage();
            var personsOnImage = _faceDetectionLibrary.FaceRecognition(faceBitmap);

            if (personsOnImage == null)
            {
                return(BadRequest("No faces found."));
            }
            else if (personsOnImage.Count == 0)
            {
                return(BadRequest("Face recognition could not found any persons on image."));
            }
            else if (personsOnImage.Count == 1)
            {
                var personOnImage = personsOnImage.First();

                if (personOnImage.RecognitionStatus == FaceRecognitionStatus.FaceRecognitionFailure ||
                    personOnImage.RecognitionStatus == FaceRecognitionStatus.FaceRecognitionError)
                {
                    if (personOnImage.PersonOnFace == null)
                    {
                        return(BadRequest("Face recognition failed with eigen distance " + personOnImage.EigenDistance + "."));
                    }
                    else
                    {
                        return(BadRequest("Face recognition failed with eigen distance " + personOnImage.EigenDistance +
                                          ". Presumed person on image is: " + personOnImage.PersonOnFace.FirstName + " " + personOnImage.PersonOnFace.LastName));
                    }
                }
            }

            return(Ok(personsOnImage));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> FileUpload(List <IFormFile> files)
        {
            if (files.Count != 1)
            {
                return(this.View(nameof(this.Index)));
            }

            var formFile = files.First();

            var model = new DetectionViewModel();

            await using var ms = new MemoryStream();
            await formFile.OpenReadStream().CopyToAsync(ms);

            using var bitmap = Image.FromStream(ms);
            var data   = ImageHelper.ConvertToBase64(ms.ToArray());
            var width  = bitmap.Width;
            var height = bitmap.Height;

            model.Image = new ImageViewModel(formFile.FileName, data, width, height);

            var areas  = new List <DetectAreaModel>();
            var detect = this._FaceDetectionService.Locations(ms.ToArray());

            if (detect != null)
            {
                areas.AddRange(detect);
            }

            model.DetectAreas = areas.ToArray();

            return(this.View(nameof(this.Index), model));
        }
Ejemplo n.º 3
0
        public DetectionViewModel Detect(DetectionViewModel detectionViewModel)
        {
            var faceBitmap = detectionViewModel.GetImage();
            var faces      = _faceDetectionLibrary.FindFaces(faceBitmap);

            faceBitmap         = _faceDetectionLibrary.DrawFacesBoundsOnBitmap(faceBitmap, faces);
            detectionViewModel = DetectionViewModel.Build(faceBitmap);

            return(detectionViewModel);
        }