private async void Data_FaceDetectionCompleted(object sender, EventArgs e) { ImageAnalyzer data = sender as ImageAnalyzer; if (data == null) { return; } if (data.DetectedEmotion == null) { await data.DetectEmotionAsync(); } foreach (Face face in data.DetectedFaces) { Recognition recognizedFace = new Recognition() { id = Guid.NewGuid().ToString(), Timestamp = DateTime.Now, Location = this.Location, Age = face.FaceAttributes.Age, Gender = face.FaceAttributes.Gender, Glasses = Enum.GetName(typeof(Glasses), face.FaceAttributes.Glasses) }; FillFaceEmotions(recognizedFace, face.FaceRectangle, data.DetectedEmotion); this.faceRecognitionQueue.Enqueue(recognizedFace); } }
private void FillFaceEmotions(Recognition recognizedFace, FaceRectangle rectangle, IEnumerable <Microsoft.ProjectOxford.Common.Contract.Emotion> detectedEmotion) { if (detectedEmotion == null) { return; } Microsoft.ProjectOxford.Common.Contract.Emotion emotion = detectedEmotion.FirstOrDefault <Microsoft.ProjectOxford.Common.Contract.Emotion>(em => em.FaceRectangle.Left == rectangle.Left && em.FaceRectangle.Top == rectangle.Top && em.FaceRectangle.Width == rectangle.Width && em.FaceRectangle.Height == rectangle.Height); if (emotion != null) { recognizedFace.Anger = emotion.Scores.Anger; recognizedFace.Contempt = emotion.Scores.Contempt; recognizedFace.Disgust = emotion.Scores.Disgust; recognizedFace.Fear = emotion.Scores.Fear; recognizedFace.Happiness = emotion.Scores.Happiness; recognizedFace.Neutral = emotion.Scores.Neutral; recognizedFace.Sadness = emotion.Scores.Sadness; recognizedFace.Surprise = emotion.Scores.Surprise; } }