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)); }
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)); }
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); }