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);
        }