private async void Upload() { if (!CrossMedia.Current.IsPickPhotoSupported) { await App.Current.MainPage.DisplayAlert("No upload", "Picking a photo is not supported.", "OK"); return; } var file = await CrossMedia.Current.PickPhotoAsync(); if (file == null) { return; } IsBusy = true; SourceImage = ImageSource.FromStream(() => file.GetStream()); try { EmotionDetection = await DetectFaceAndEmotionsAsync(file); } catch (Exception ex) { await App.Current.MainPage.DisplayAlert("Error", ex.Message, "OK"); return; } finally { IsBusy = false; } }
public async void Take() { await CrossMedia.Current.Initialize(); if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported) { await App.Current.MainPage.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; } IsBusy = true; SourceImage = ImageSource.FromStream(() => file.GetStream()); EmotionDetection = await DetectFaceAndEmotionsAsync(file); IsBusy = false; }
private async Task <FaceEmotionDetection> DetectFaceAndEmotionsAsync(MediaFile inputFile) { if (!CrossConnectivity.Current.IsConnected) { await App.Current.MainPage.DisplayAlert("Network error", "Please check your network connection and retry.", "OK"); return(null); } try { Emotion[] emotionResult = await App.EmotionServiceClient. RecognizeAsync(inputFile.GetStream()); var faceEmotion = emotionResult[0]?.Scores.ToRankedList(); var requiredFaceAttributes = new FaceAttributeType[] { FaceAttributeType.Age, FaceAttributeType.Gender, FaceAttributeType.Smile, FaceAttributeType.FacialHair, FaceAttributeType.HeadPose, FaceAttributeType.Glasses }; // Get a list of faces in a picture var faces = await App.FaceServiceClient. DetectAsync(inputFile.GetStream(), false, false, requiredFaceAttributes); // Assuming there is only one face, store its attributes var faceAttributes = faces[0]?.FaceAttributes; if (faceEmotion == null || faceAttributes == null) { return(null); } FaceEmotionDetection faceEmotionDetection = new FaceEmotionDetection(); faceEmotionDetection.Age = faceAttributes.Age; faceEmotionDetection.Emotion = 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 App.Current.MainPage.DisplayAlert("Error", ex.Message, "OK"); return(null); } }