Example #1
0
        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");
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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");
            }
        }