private async void UploadPictureButton_Clicked(object sender, EventArgs e) { try { if (!CrossMedia.Current.IsPickPhotoSupported) { await DisplayAlert("No upload", "Picking a photo is not supported.", "OK"); return; } var file = await CrossMedia.Current.PickPhotoAsync(); if (file == null) { return; } this.Indicator1.IsVisible = true; this.Indicator1.IsRunning = true; Image1.Source = ImageSource.FromStream(() => file.GetStream()); FaceEmotionDetection theData = await DetectFaceAndEmotionsAsync(file); this.BindingContext = theData; this.Indicator1.IsRunning = false; this.Indicator1.IsVisible = false; } catch (Exception ex) { await DisplayAlert("Error", ex.Message, "OK"); } }
private async Task <FaceEmotionDetection> DetectFaceAndEmotionsAsync(MediaFile inputFile) { try { IFaceServiceClient faceServiceClient = new FaceServiceClient("a795a1dfd1d4495c9fc338ec4794d841", "https://westcentralus.api.cognitive.microsoft.com/face/v1.0"); var requiredFaceAttributes = new FaceAttributeType[] { FaceAttributeType.Age, FaceAttributeType.Gender, FaceAttributeType.Smile, FaceAttributeType.FacialHair, FaceAttributeType.HeadPose, FaceAttributeType.Glasses, FaceAttributeType.Emotion }; var faces = await faceServiceClient.DetectAsync(inputFile.GetStream(), false, false, requiredFaceAttributes); var faceAttributes = faces[0]?.FaceAttributes; FaceEmotionDetection faceEmotionDetection = new FaceEmotionDetection(); faceEmotionDetection.Age = faceAttributes.Age; string emocion = obtenerEmocion(faceAttributes.Emotion); faceEmotionDetection.Emotion = emocion;// faceEmotion.FirstOrDefault().Key; faceEmotionDetection.Glasses = faceAttributes.Glasses.ToString(); faceEmotionDetection.Smile = faceAttributes.Smile; faceEmotionDetection.Gender = faceAttributes.Gender; faceEmotionDetection.Moustache = faceAttributes.FacialHair.Moustache; faceEmotionDetection.Beard = faceAttributes.FacialHair.Beard; return(faceEmotionDetection); } catch (Exception ex) { await DisplayAlert("Error", ex.Message, "OK"); return(null); } }
private async void TakePictureButton_Clicked(object sender, EventArgs e) { try { await CrossMedia.Current.Initialize(); if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current. IsTakePhotoSupported) { await DisplayAlert("No Camera", "No camera available.", "OK"); return; } var file = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions { SaveToAlbum = true, Name = "test.jpg" }); if (file == null) { return; } this.Indicator1.IsVisible = true; this.Indicator1.IsRunning = true; Image1.Source = ImageSource.FromStream(() => file.GetStream()); FaceEmotionDetection theData = await DetectFaceAndEmotionsAsync(file); this.BindingContext = theData; this.Indicator1.IsRunning = false; this.Indicator1.IsVisible = false; } catch (Exception ex) { await DisplayAlert("Error", ex.Message, "OK"); } }