private async void ExecuteConfirmedCommand() { try { IsRunning = true; var result = await FaceServiceHelper.DetectAsync(GetStream, true); if (result == null || result.Count() == 0) { return; } await FaceServiceHelper.AddPersonFaceAsync(SelectedGroup.PersonGroupId, SelectedPerson.PersonId, GetStream, null, result.FirstOrDefault().FaceRectangle); await FaceServiceHelper.TrainPersonGroupAsync(SelectedGroup.PersonGroupId); ImageUrl = string.Empty; await _mvvmService.MessageMvvm("Mensagem", "Rosto cadastrado com sucesso", "Ok"); } catch (Exception ex) { } finally { IsRunning = false; } }
private async void ExecuteCheckFaceCommand() { IsRunning = true; await CrossMedia.Current.Initialize(); var mediaFile = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions()); ImageUrl = mediaFile?.Path; try { var func = new Func <Task <Stream> >(() => Task.Factory.StartNew <Stream>(() => mediaFile.GetStream())); var result = await FaceServiceHelper.DetectAsync(func, true, false, null); var resultIdentify = await FaceServiceHelper.IdentifyAsync("2", result.Select(p => p.FaceId).ToArray()); if (resultIdentify.Any()) { var candidate = resultIdentify.FirstOrDefault().Candidates .OrderBy(p => p.Confidence) .FirstOrDefault(); StatusResult = "Rosto Cadastrado"; TextColor = Color.Green; var person = await FaceServiceHelper.GetPersonAsync("2", candidate.PersonId); Text = person.Name; IsChecked = true; } else { StatusResult = "Rosto Não Cadastrado"; TextColor = Color.Red; IsChecked = false; } } catch (Exception ex) { await _mvvmService.MessageMvvm("Error", ex.Message, "ok"); } finally { IsRunning = false; } }