public void ShowEmotionData(FaceEmotionData emotion) { this.EmotionData = EmotionServiceHelper.ScoresToEmotionData(emotion.Scores).OrderByDescending(e => e.EmotionScore).ToArray(); this.DataContext = this; this.genderAgeGrid.Visibility = Visibility.Collapsed; this.emotionGrid.Visibility = Visibility.Visible; this.captionCanvas.Visibility = Visibility.Visible; }
public static async Task <FaceEmotionData[]> RecognizeAsync(Func <Task <Stream> > imageStreamCallback) { // Implement: PBI 2, Task 3, Step 5 // You should make a call to the EmotionServiceClient object that support a Stream as parameter to identify emotions //return await RunTaskWithAutoRetryOnQuotaLimitExceededError<EmotionData[]>(async () => await emotionClient.RecognizeAsync(await imageStreamCallback())); Stream imgData = await imageStreamCallback(); IList <DetectedFace> result = await RunTaskWithAutoRetryOnQuotaLimitExceededError <IList <DetectedFace> >(async() => await emotionClient.Face.DetectWithStreamAsync(imgData, true, false, faceAttributes)); //.RecognizeAsync(await imageStreamCallback())); //int i = GetDefaultResultIndex(result); FaceEmotionData[] fed = new FaceEmotionData[result.Count]; for (int i = 0; i < result.Count; i++) { FaceEmotionData emData = new FaceEmotionData { Scores = new EmotionScores(), FaceRectangle = new Rectangle() }; emData.Scores.Anger = result[i].FaceAttributes.Emotion.Anger; emData.Scores.Contempt = result[i].FaceAttributes.Emotion.Contempt; emData.Scores.Disgust = result[i].FaceAttributes.Emotion.Disgust; emData.Scores.Fear = result[i].FaceAttributes.Emotion.Fear; emData.Scores.Happiness = result[i].FaceAttributes.Emotion.Happiness; emData.Scores.Neutral = result[i].FaceAttributes.Emotion.Neutral; emData.Scores.Sadness = result[i].FaceAttributes.Emotion.Sadness; emData.Scores.Surprise = result[i].FaceAttributes.Emotion.Surprise; emData.FaceRectangle.Height = result[i].FaceRectangle.Height; emData.FaceRectangle.Left = result[i].FaceRectangle.Left; emData.FaceRectangle.Top = result[i].FaceRectangle.Top; emData.FaceRectangle.Width = result[i].FaceRectangle.Width; fed[i] = emData; } return(fed); }