public static async Task <List <Mood> > DetectFaceExtract(Bitmap bitmap) { // change image to stream var stream = ToStream(bitmap, ImageFormat.Png); IList <DetectedFace> detectedFaces; // Detect faces with all attributes from image // we don't need all these attributes, only emotion is sufficient for current iteration detectedFaces = await Instances.Authenticate().Face.DetectWithStreamAsync(stream, returnFaceAttributes: new List <FaceAttributeType> { FaceAttributeType.Accessories, FaceAttributeType.Age, FaceAttributeType.Blur, FaceAttributeType.Emotion, FaceAttributeType.Exposure, FaceAttributeType.FacialHair, FaceAttributeType.Gender, FaceAttributeType.Glasses, FaceAttributeType.Hair, FaceAttributeType.HeadPose, FaceAttributeType.Makeup, FaceAttributeType.Noise, FaceAttributeType.Occlusion, FaceAttributeType.Smile }); // debug OutputData(detectedFaces); // get the most likely emotion for each detected face var emotions = new List <Mood>(); foreach (var face in detectedFaces) { var list = new List <double>() { face.FaceAttributes.Emotion.Anger, face.FaceAttributes.Emotion.Fear, face.FaceAttributes.Emotion.Happiness, face.FaceAttributes.Emotion.Neutral, face.FaceAttributes.Emotion.Sadness, face.FaceAttributes.Emotion.Surprise }; var mood = GetMood(list); emotions.Add(mood); } stream.Dispose(); return(emotions); }