private Dictionary <string, AnimetricsDetectResponse> DetectFaces(Dictionary <string, System.Drawing.Image> images)
        {
            Dictionary <string, AnimetricsDetectResponse> result = new Dictionary <string, AnimetricsDetectResponse>();

            foreach (var entry in images)
            {
                MemoryStream imageStream = new MemoryStream();
                DataSet.GetImage(entry.Key).Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg);

                var retryPolicy = Policy.HandleResult <AnimetricsDetectResponse>(r => r.images == null).Retry(3, (exception, retryCount) =>
                {
                    ApiKeys.NextKey();
                });

                AnimetricsDetectResponse response = retryPolicy.Execute(() => DetectFace(imageStream));

                try
                {
                    if (response.images[0].faces.Count > 0)
                    {
                        Console.WriteLine("Face found in image {0}.", entry.Key);
                        result.Add(entry.Key, response);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("No faces found in image {0}.", entry.Key);
                }
            }

            return(result);
        }
        private List <AnimetricsEnrollResponse> EnrollTargetFaces()
        {
            List <AnimetricsEnrollResponse> result = new List <AnimetricsEnrollResponse>();

            foreach (var entry in DetectedTargetFaces)
            {
                var retryPolicy = Policy.HandleResult <AnimetricsEnrollResponse>(r => r.images == null).Retry(3, (exception, retryCount) =>
                {
                    ApiKeys.NextKey();
                });

                AnimetricsEnrollResponse response = retryPolicy.Execute(() => EnrollFace(entry));
                if (response != null)
                {
                    result.Add(response);
                    Console.WriteLine("Image {0} enrolled.", entry.Key);
                }
            }
            return(result);
        }
        private List <AnimetricsRecognizeResponse> RecognizeSourceFaces()
        {
            List <AnimetricsRecognizeResponse> result = new List <AnimetricsRecognizeResponse>();

            foreach (var entry in DetectedSourceFaces)
            {
                var retryPolicy = Policy.HandleResult <AnimetricsRecognizeResponse>(r => r.images == null).Retry(3, (exception, retryCount) =>
                {
                    ApiKeys.NextKey();
                });

                AnimetricsRecognizeResponse response = retryPolicy.Execute(() => RecognizeFace(entry));


                if (response != null)
                {
                    result.Add(response);
                    Console.WriteLine("Face recognized in source image {0}.", entry.Key);
                }
            }
            return(result);
        }