Example #1
0
        public async Task <DetectLabelsResponse> GetImageLabels(DetectLabelsRequest request)
        {
            DetectLabelsResponse response = await _Client.DetectLabelsAsync(request);

            if (response.HttpStatusCode.Equals(HttpStatusCode.OK) && response.Labels.Count > 0)
            {
                return(response);
            }
            return(null);
        }
        static async Task <string> ReadTextFromStreamAWS(byte[] byteData)
        {
            try
            {
                using (var imageCient = new AmazonRekognitionClient())
                {
                    var stream = new MemoryStream(byteData);

                    //if using .NET Core, make sure to use await keyword and async method
                    var detectResponses = await imageCient.DetectLabelsAsync(new DetectLabelsRequest
                    {
                        MinConfidence = 75,
                        Image         = new Image
                        {
                            Bytes = stream
                        }
                    });

                    var contentString = new List <string>();
                    foreach (var item in detectResponses.Labels)
                    {
                        contentString.Add(item.Name);
                    }

                    var json = JsonConvert.SerializeObject(contentString);
                    return(json);
                }
            }
            catch (Exception e)
            {
                return(e.Message);
            }
        }
        /// <summary>
        /// A simple function that takes an image name as an input and returns whether it's abc or not?
        /// </summary>
        /// <param name="input">name of the image we want to detect</param>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task <bool> FunctionHandler(string input, ILambdaContext context)
        {
            var rekognitionClient = new AmazonRekognitionClient();

            var response = await rekognitionClient.DetectLabelsAsync(
                new DetectLabelsRequest
            {
                Image = new Image
                {
                    S3Object = new S3Object
                    {
                        Bucket = "somebucket",
                        Name   = input   //the name of the image we are detecting
                    }
                }
            });

            //iterate through all the labels for the real-world object detected
            foreach (var label in response.Labels)
            {
                if (label.Confidence > 50) //here if confidence is more than 50, we make the call that it's the image we are looking for
                {
                    if (label.Name == "Fried Chicken" || label.Name == "Nuggets")
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Example #4
0
        public async Task <DetectLabelsResponse> RecognizeImage(string fileName)
        {
            Image image = new Image();

            using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
            {
                byte[] data = null;
                data = new byte[fs.Length];
                fs.Read(data, 0, (int)fs.Length);
                image.Bytes = new MemoryStream(data);
            }


            AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();

            DetectLabelsRequest detectlabelsRequest = new DetectLabelsRequest()
            {
                Image         = image,
                MaxLabels     = 10,
                MinConfidence = 77F
            };

            DetectLabelsResponse detectLabelsResponse = await rekognitionClient.DetectLabelsAsync(detectlabelsRequest);

            return(detectLabelsResponse);
        }
Example #5
0
        public async Task <List <string> > LabelImage(byte[] imgBytes)
        {
            List <string> lstLabels = new List <string>();

            try
            {
                MemoryStream        memStream           = new MemoryStream(imgBytes);
                DetectLabelsRequest detectlabelsRequest = new DetectLabelsRequest()
                {
                    Image = new Image {
                        Bytes = memStream
                    },
                    MaxLabels     = _maxLabels,
                    MinConfidence = _minConfidence
                };

                DetectLabelsResponse response = await client.DetectLabelsAsync(detectlabelsRequest);

                foreach (Label label in response.Labels)
                {
                    lstLabels.Add(label.Name);
                }
            }
            catch (Exception ex)
            {
                _logger.Error("Error getting info from AWS", ex);
                return(null);
            }

            return(lstLabels);
        }
Example #6
0
        private async Task <string> DetectObjects(MemoryStream memoryStream, AmazonRekognitionClient client, ILambdaContext context)
        {
            List <string> responseText     = new List <string>();
            string        detectedResponse = "";

            isDetectFace = false;
            try
            {
                var detectResponses = await client.DetectLabelsAsync(new DetectLabelsRequest
                {
                    MinConfidence = 80,
                    Image         = new Image
                    {
                        Bytes = memoryStream
                    },
                    MaxLabels = 10
                });

                if (detectResponses != null && detectResponses.HttpStatusCode == HttpStatusCode.OK && detectResponses.Labels.Count > 0)
                {
                    foreach (var item in detectResponses.Labels)
                    {
                        if (item.Name.Contains("Human") || item.Name.Contains("People") || item.Name.Contains("Person"))
                        {
                            isDetectFace = true;
                        }
                        else
                        {
                            responseText.Add(item.Name);
                        }
                    }
                    if (responseText.Count > 0)
                    {
                        detectedResponse = "you are seeing " + string.Join(", ", responseText.ToArray());
                        if (isDetectFace)
                        {
                            detectedResponse = detectedResponse + "  you also have people around you.";
                        }
                    }
                    else if (responseText.Count == 0 && isDetectFace)
                    {
                        detectedResponse = "  you have people around you.";
                    }
                    else
                    {
                        detectedResponse = "No objects Detected";
                    }
                }
                else
                {
                    detectedResponse = "No objects Detected";
                }
            }
            catch (Exception ex)
            {
                context.Logger.LogLine(ex.Message);
                detectedResponse = "No objects Detected";
            }
            return(detectedResponse);
        }
Example #7
0
        /// <summary>
        /// A function for responding to S3 create events. It will determine if the object is an image and use Amazon Rekognition
        /// to detect labels and add the labels as tags on the S3 object.
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        /// <returns></returns>

        public async Task <ObservableCollection <string> > FunctionHandler(string input, ILambdaContext context)
        {
            ObservableCollection <String> listTest = new ObservableCollection <String>();
            var rekognitionClient = new AmazonRekognitionClient();

            var detectResponse = await rekognitionClient.DetectLabelsAsync(
                new DetectLabelsRequest
            {
                Image = new Image
                {
                    S3Object = new Amazon.Rekognition.Model.S3Object
                    {
                        Bucket = "cloudgangbucket",
                        Name   = input
                    }
                }
            }
                );

            foreach (var label in detectResponse.Labels)
            {
                listTest.Add(label.Name + ": " + label.Confidence + "%");
            }

            return(listTest);
        }
Example #8
0
        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task <bool> FunctionHandler(string fileName, ILambdaContext context)
        {
            var accesKey  = "";
            var secretKey = "";

            var rekognitionClient = new AmazonRekognitionClient(accesKey, secretKey, Amazon.RegionEndpoint.USWest2);

            var detectResponses = await rekognitionClient.DetectLabelsAsync(new DetectLabelsRequest
            {
                MinConfidence = 30,
                Image         = new Image
                {
                    S3Object = new Amazon.Rekognition.Model.S3Object
                    {
                        Bucket = "schnitzelornot",
                        Name   = fileName
                    }
                }
            });

            foreach (var label in detectResponses.Labels)
            {
                if (label.Name == "Fried Chicken" || label.Name == "Nuggets")
                {
                    return(true);
                }
            }

            return(false);;
        }
Example #9
0
        // For Image analysis
        public List <Label> DetectLabels(MemoryStream stream, string target, out string message)
        {
            string outMessage    = "";
            var    minConfidence = 70;//float.Parse(Console.ReadLine());

            Stopwatch watch = new Stopwatch();

            watch.Start();
            var response = _client.DetectLabelsAsync(new DetectLabelsRequest
            {
                MinConfidence = minConfidence,
                MaxLabels     = 100,
                Image         = new Image
                {
                    Bytes = stream
                }
            }).Result;

            watch.Stop();
            foreach (var label in response.Labels)
            {
                //Console.WriteLine($"{label.Name}                 {label.Confidence} %");
                if (label.Name.ToLower() == target.ToLower())
                {
                    outMessage = "The Object '" + target.ToUpper() + "' in your watchlist has been found in live stream with '" + Convert.ToInt32(label.Confidence) + "%' confidence.";
                }
            }
            message = outMessage;

            LogResponse(GetIndentedJson(response), "DetectLabels");
            return(response.Labels);
        }
Example #10
0
        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task <bool> FunctionHandler(string input, ILambdaContext context)
        {
            var reckognitionClient = new AmazonRekognitionClient();
            var detectResponse     = await reckognitionClient.DetectLabelsAsync(
                new DetectLabelsRequest
            {
                Image = new Image
                {
                    S3Object = new S3Object
                    {
                        Bucket = "rekogniton1907154",
                        Name   = input
                    }
                }
            }
                );

            foreach (var label in detectResponse.Labels)
            {
                if (label.Confidence > 50)
                {
                    if (label.Name == "Fried Chicken" || label.Name == "Nuggets")
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
Example #11
0
        public async Task ExecuteAsync()
        {
            var keyName       = "TestIMage.png";
            var client        = new AmazonRekognitionClient(RegionEndpoint.USEast1);
            var labelsRequest = new DetectLabelsRequest
            {
                Image = new Image
                {
                    S3Object = new S3Object()
                    {
                        Name   = keyName,
                        Bucket = "rawimagestc1983"
                    }
                },
                MaxLabels     = 10,
                MinConfidence = 75f
            };

            var moderationRequest = new DetectModerationLabelsRequest
            {
                Image = new Image
                {
                    S3Object = new S3Object()
                    {
                        Name   = keyName,
                        Bucket = "rawimagestc1983"
                    }
                },
                MinConfidence = 60f
            };

            var labelsResponse = await client.DetectLabelsAsync(labelsRequest);

            var inappropriateResponse = await client.DetectModerationLabelsAsync(moderationRequest);

            Console.WriteLine("Detected Labels for Image");
            Console.WriteLine();

            foreach (Label label in labelsResponse.Labels)
            {
                Console.WriteLine("{0}: {1}", label.Name, label.Confidence);
            }
            Console.WriteLine();

            foreach (ModerationLabel label in inappropriateResponse.ModerationLabels)
            {
                Console.WriteLine("Label: {0}\n Confidence: {1}\n Parent: {2}",
                                  label.Name, label.Confidence, label.ParentName);
            }
        }
Example #12
0
        public async Task Handler(S3Event s3Event)
        {
            // Level 1: Make this output when a file is uploaded to S3
            LambdaLogger.Log("Hello from The AutoMaTweeter!");

            // Level 2: Get the bucket name and key from event data and log to cloudwatch
            var bucketName = s3Event.Records[0].S3.Bucket.Name;
            var keyName    = s3Event.Records[0].S3.Object.Key;

            LambdaLogger.Log($"The AutoMaTweeter found a file path: {bucketName}/{keyName}");

            var file1 = await RetrieveBinaryPayload(bucketName, keyName);

            // Boss Level: Use Amazon Rekognition to get keywords about the image
            IEnumerable <string> labels = Enumerable.Empty <string>();

            using (var client = new AmazonRekognitionClient())
            {
                var request = new DetectLabelsRequest();
                request.Image       = new Image();
                request.Image.Bytes = new MemoryStream(file1);
                var response = await client.DetectLabelsAsync(request);

                labels = response.Labels.Select(x => x.Name);
            }

            // Level 3: Post the image and message to twitter
            var consumerKey       = "GCNunS5DfXGwh8rvFAterxmXP";
            var consumerSecret    = "fq03tBiAIAM7pB6DjRI8S69scCFiR3FibCbjz3HWfjEOPMLSQD";
            var accessToken       = "842206967632338944-XMAH3FU86RSak57FVJmglXn4HAvNmpy";
            var accessTokenSecret = "fiFvNoEASqyqWo3FuFr5JKBYyWlILihVLlGCTSxfqAtlv";

            Auth.SetUserCredentials(consumerKey, consumerSecret, accessToken, accessTokenSecret);

            var media = Upload.UploadImage(file1);

            var message = "Team1: " + string.Join(" ", labels);

            if (message.Length > 140)
            {
                message = message.Substring(0, 139);
            }

            var tweet = Tweet.PublishTweet(message, new PublishTweetOptionalParameters
            {
                Medias = new List <IMedia> {
                    media
                }
            });
        }
Example #13
0
        private async Task <object> GetImageLabels(string fileName, AmazonRekognitionClient rekognitionClient)
        {
            var detectResponses = await rekognitionClient.DetectLabelsAsync(new DetectLabelsRequest
            {
                MinConfidence = 50,

                Image = new Image
                {
                    S3Object = new Amazon.Rekognition.Model.S3Object
                    {
                        Bucket = bucketName,
                        Name   = fileName
                    }
                }
            });

            return(detectResponses.Labels);
        }
        public async Task <IEnumerable <Rectangle> > ExtractCarsAsync()
        {
            if (_objectsResponse == null)
            {
                var objectsRequest = new DetectLabelsRequest()
                {
                    Image = _rekognitionImage
                };
                _objectsResponse = await _client.DetectLabelsAsync(objectsRequest);
            }

            return(ExtractCars());
        }
Example #15
0
        // snippet-start:[Rekognition.dotnetv3.DetectLabelsLocalFile]
        public static async Task Main()
        {
            string photo = "input.jpg";

            var image = new Amazon.Rekognition.Model.Image();

            try
            {
                using var fs = new FileStream(photo, FileMode.Open, FileAccess.Read);
                byte[] data = null;
                data = new byte[fs.Length];
                fs.Read(data, 0, (int)fs.Length);
                image.Bytes = new MemoryStream(data);
            }
            catch (Exception)
            {
                Console.WriteLine("Failed to load file " + photo);
                return;
            }

            var rekognitionClient = new AmazonRekognitionClient();

            var detectlabelsRequest = new DetectLabelsRequest
            {
                Image         = image,
                MaxLabels     = 10,
                MinConfidence = 77F,
            };

            try
            {
                DetectLabelsResponse detectLabelsResponse = await rekognitionClient.DetectLabelsAsync(detectlabelsRequest);

                Console.WriteLine($"Detected labels for {photo}");
                foreach (Label label in detectLabelsResponse.Labels)
                {
                    Console.WriteLine($"{label.Name}: {label.Confidence}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Example #16
0
        // Uses the Amazon Rekognition service to detect labels within an image.
        public async Task <List <WorkItem> > DetectLabels(string bucketName, string photo)
        {
            var rekognitionClient   = new AmazonRekognitionClient(RegionEndpoint.USWest2);
            var labelList           = new List <WorkItem>();
            var detectlabelsRequest = new DetectLabelsRequest
            {
                Image = new Image()
                {
                    S3Object = new Amazon.Rekognition.Model.S3Object()
                    {
                        Name   = photo,
                        Bucket = bucketName,
                    },
                },
                MaxLabels     = 10,
                MinConfidence = 75F,
            };

            try
            {
                DetectLabelsResponse detectLabelsResponse = await rekognitionClient.DetectLabelsAsync(detectlabelsRequest);

                Console.WriteLine("Detected labels for " + photo);
                WorkItem workItem;
                foreach (Label label in detectLabelsResponse.Labels)
                {
                    workItem            = new WorkItem();
                    workItem.Key        = photo;
                    workItem.Confidence = label.Confidence.ToString();
                    workItem.Name       = label.Name;
                    labelList.Add(workItem);
                }

                return(labelList);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            return(null);
        }
        public async Task <DetectLabelsResponse> DetectLabels(DetectLabelParams dlp)
        {
            var detectlabelsRequest = new DetectLabelsRequest()
            {
                Image = new Image()
                {
                    Bytes    = new MemoryStream(),
                    S3Object = new S3Object()
                    {
                        Bucket  = dlp.BucketName,
                        Name    = dlp.PhotoName,
                        Version = dlp.PhotoVersion
                    }
                },

                MinConfidence = dlp.MinConfidence,
                MaxLabels     = dlp.MaxLabels
            };

            Task <DetectLabelsResponse> detectLabelsResponse = null;

            try
            {
                using (AmazonRekognitionClient recognitionClient = new AmazonRekognitionClient())
                {
                    detectLabelsResponse = recognitionClient.DetectLabelsAsync(detectlabelsRequest);
                }

                Console.WriteLine("Detected labels for " + dlp.PhotoName);
                foreach (Label label in detectLabelsResponse.Result.Labels)
                {
                    Console.WriteLine("{0}: {1}", label.Name, label.Confidence);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            return(await detectLabelsResponse ?? throw new Exception("response is null"));
        }
        public static async Task Detect()
        {
            //Get picture from local storage
            var photo = "img/sheep.png";

            var image = new Image();

            try
            {
                await using var fs = new FileStream(photo, FileMode.Open, FileAccess.Read);
                var data = new byte[fs.Length];
                fs.Read(data, 0, (int)fs.Length);
                image.Bytes = new MemoryStream(data);
            }
            catch (Exception)
            {
                Console.WriteLine("Failed to load file " + photo);
                return;
            }

            var rekognitionClient = new AmazonRekognitionClient();

            //Set settings for label detection
            var detectlabelsRequest = new DetectLabelsRequest
            {
                Image         = image,
                MaxLabels     = 3,
                MinConfidence = 77F
            };


            var detectLabelsResponse = await rekognitionClient.DetectLabelsAsync(detectlabelsRequest);

            Console.WriteLine("Detected labels for " + photo);
            foreach (var label in detectLabelsResponse.Labels)
            {
                Console.WriteLine("{0}: {1}", label.Name, label.Confidence);
            }
        }
Example #19
0
        // snippet-start:[Rekognition.dotnetv3.DetectLabelsExample]
        public static async Task Main()
        {
            string photo  = "del_river_02092020_01.jpg"; // "input.jpg";
            string bucket = "igsmiths3photos";           // "bucket";

            var rekognitionClient = new AmazonRekognitionClient();

            var detectlabelsRequest = new DetectLabelsRequest
            {
                Image = new Image()
                {
                    S3Object = new S3Object()
                    {
                        Name   = photo,
                        Bucket = bucket,
                    },
                },
                MaxLabels     = 10,
                MinConfidence = 75F,
            };

            try
            {
                DetectLabelsResponse detectLabelsResponse = await rekognitionClient.DetectLabelsAsync(detectlabelsRequest);

                Console.WriteLine("Detected labels for " + photo);
                foreach (Label label in detectLabelsResponse.Labels)
                {
                    Console.WriteLine($"Name: {label.Name} Confidence: {label.Confidence}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        public async Task <DetectLabelsResponse> DetectAsync(MemoryStream data)
        {
            try
            {
                var image = new Image()
                {
                    Bytes = data
                };

                detectlabelsRequest = new DetectLabelsRequest()
                {
                    Image         = image,
                    MaxLabels     = 10,
                    MinConfidence = 77F
                };

                return(await rekognitionClient.DetectLabelsAsync(detectlabelsRequest));
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return(new DetectLabelsResponse());
            }
        }
Example #21
0
        public static void Example()
        {
            const string photo  = "recognition/BM.jpg";
            const string bucket = "bhavesh-aws-bucket";

            var rekognitionClient = new AmazonRekognitionClient(RegionEndpoint.APSouth1);

            var detectlabelsRequest = new DetectLabelsRequest()
            {
                Image = new Image()
                {
                    S3Object = new S3Object()
                    {
                        Name   = photo,
                        Bucket = bucket
                    },
                },
                MaxLabels     = 10,
                MinConfidence = 75F
            };

            try
            {
                var detectLabels         = rekognitionClient.DetectLabelsAsync(detectlabelsRequest);
                var detectLabelsResponse = detectLabels.Result;
                Console.WriteLine("Detected labels for " + photo);
                foreach (Label label in detectLabelsResponse.Labels)
                {
                    Console.WriteLine("{0}: {1}", label.Name, label.Confidence);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
Example #22
0
        //[Route("[action]")]
        //public async Task<ActionResult<FileVM>> PostImage(FileVM UploadedImage)
        public async Task <IActionResult> PostImage(FileVM UploadedImage)
        {
            byte[] bytes = Convert.FromBase64String(UploadedImage.FileAsBase64);

            var credentials = new BasicAWSCredentials("AKIAYFOXPUFXRIBLXF4O", "kt30oEKBt35RZRxXD6rLRd2uxITL0aYX24qFXnox");

            var config = new AmazonS3Config
            {
                RegionEndpoint = Amazon.RegionEndpoint.USEast1
            };

            var image = new Image();

            using (var client = new AmazonS3Client(credentials, config))
            {
                using (var newMemoryStream = new MemoryStream(bytes))
                {
                    //file.CopyTo(newMemoryStream);

                    var uploadRequest = new TransferUtilityUploadRequest
                    {
                        InputStream = newMemoryStream,
                        Key         = UploadedImage.FileName,
                        BucketName  = "quickquoteitem",
                        CannedACL   = S3CannedACL.PublicRead
                    };

                    var fileTransferUtility = new TransferUtility(client);

                    try
                    {
                        await fileTransferUtility.UploadAsync(uploadRequest);
                    }
                    catch (Exception err)
                    {
                        throw err;
                    }
                }
            }

            AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient(credentials, Amazon.RegionEndpoint.USEast1);

            DetectLabelsRequest detectlabelsRequest = new DetectLabelsRequest()
            {
                Image = new Image()
                {
                    S3Object = new S3Object()
                    {
                        Name   = UploadedImage.FileName,
                        Bucket = "quickquoteitem"
                    },
                },
                MaxLabels     = 10,
                MinConfidence = 75F
            };

            try
            {
                var Labels = new List <LabelVM>();

                DetectLabelsResponse detectLabelsResponse =
                    await rekognitionClient.DetectLabelsAsync(detectlabelsRequest);

                //Console.WriteLine("Detected labels for " + photo);
                foreach (Label label in detectLabelsResponse.Labels)
                {
                    var item = new LabelVM();
                    item.LabelName       = label.Name;
                    item.LabelConfidence = label.Confidence.ToString();
                    Labels.Add(item);
                }
                return(Ok(Labels));
                //Console.WriteLine("{0}: {1}", label.Name, label.Confidence);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            //return CreatedAtAction("GetQuote", new { id = quote.QuoteID }, quote);
            return(Ok());
        }
Example #23
0
        private static async Task Main(string[] args)
        {
            const string AWS_ACCESS_KEY_ID     = "AWS_ACCESS_KEY_ID";
            const string AWS_SECRET_ACCESS_KEY = "AWS_SECRET_ACCESS_KEY";

            Console.WriteLine("Hello World!");

            var self = await File.ReadAllBytesAsync("assets\\self.jpg");

            var front = await File.ReadAllBytesAsync("assets\\front.png");

            var back = await File.ReadAllBytesAsync("assets\\back.png");

            var command = new AnalizeDocumentCommand {
                Self = self, Back = back, Front = front
            };

            var region = RegionEndpoint.USEast1;
            var client = new AmazonRekognitionClient(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, region);

            #region Analiza se é documento
            using (var stream = new MemoryStream(command.Back))
            {
                var request = new DetectLabelsRequest {
                    Image = new Image {
                        Bytes = stream
                    }
                };

                var response = await client.DetectLabelsAsync(request);

                var labels = response.Labels;

                foreach (var label in labels)
                {
                    var accuracy = Accuracy.GetAccuracy(label.Confidence);

                    if (DocumentTypes.IsValidDocument(label.Name))
                    {
                        if (accuracy.IsLow)
                        {
                            Console.WriteLine("Não é um documento");
                        }
                        if (accuracy.IsMedium)
                        {
                            Console.WriteLine("Pode ser que seja um documento");
                        }
                        if (accuracy.IsHigh)
                        {
                            Console.WriteLine("É muito provável que seja um documento");
                        }

                        break;
                    }
                }
            }
            #endregion

            #region Compara com a self
            using (var source = new MemoryStream(command.Self))
                using (var target = new MemoryStream(command.Front))
                {
                    var request = new CompareFacesRequest {
                        SourceImage = new Image {
                            Bytes = source
                        }, TargetImage = new Image {
                            Bytes = target
                        }
                    };

                    var response = await client.CompareFacesAsync(request);

                    var faces = response.FaceMatches;

                    if (faces.Count != 1)
                    {
                        Console.WriteLine("Resultado inconsistente");
                    }

                    var accuracy = Accuracy.GetAccuracy(faces.First().Similarity);

                    if (accuracy.IsLow)
                    {
                        Console.WriteLine("Esse documento não da mesma pessoa");
                    }
                    if (accuracy.IsMedium)
                    {
                        Console.WriteLine("Pode ser que este documento seja da mesma pessoa");
                    }
                    if (accuracy.IsHigh)
                    {
                        Console.WriteLine("É muito provável que este documento seja da mesma pessoa");
                    }
                }
            #endregion

            #region Verifica se é do portador válido
            using (var stream = new MemoryStream(command.Back))
            {
                var request = new DetectTextRequest {
                    Image = new Image {
                        Bytes = stream
                    }
                };

                var response = await client.DetectTextAsync(request);

                var texts = response.TextDetections;

                foreach (var text in texts)
                {
                    var accuracy = Accuracy.GetAccuracy(text.Confidence);

                    if ("CPF".Equals(text.DetectedText, StringComparison.InvariantCultureIgnoreCase))
                    {
                        if (accuracy.IsLow)
                        {
                            Console.WriteLine("não contém um número de CPF");
                        }
                        if (accuracy.IsMedium)
                        {
                            Console.WriteLine("Pode ser que contenha um número de CPF");
                        }
                        if (accuracy.IsHigh)
                        {
                            Console.WriteLine("É muito provável que contenha um número de CPF");
                        }

                        break;
                    }
                }
            }
            #endregion

            Console.WriteLine("That's all folks!");
        }
        public ClassificationResult GetResult(string inputImageLocation, string pictureName)
        {
            Amazon.Rekognition.Model.Image image = new Amazon.Rekognition.Model.Image();

            // Load image
            try
            {
                using (FileStream fs = new FileStream(inputImageLocation, FileMode.Open, FileAccess.Read))
                {
                    byte[] data = null;
                    data = new byte[fs.Length];
                    fs.Read(data, 0, (int)fs.Length);
                    image.Bytes = new MemoryStream(data);
                }
            }
            catch (Exception e)
            {
                throw new Exception("Error during loading image file AWS.", e);
            }

            // Create client
            AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();

            // Create detectLabelsRequest
            DetectLabelsRequest detectlabelsRequest = new DetectLabelsRequest()
            {
                Image     = image,
                MaxLabels = Constants.maxLabelsReturned,
            };

            ClassificationResult classificationResult = new ClassificationResult()
            {
                APIName = "AWS"
            };

            try
            {
                var startTime            = DateTime.Now;
                var detectLabelsResponse = rekognitionClient.DetectLabelsAsync(detectlabelsRequest);
                detectLabelsResponse.Wait();
                var endTime = DateTime.Now;

                var labels = new List <string>();
                var scores = new List <float>();

                foreach (var label in detectLabelsResponse.Result.Labels)
                {
                    if (!string.IsNullOrEmpty(label.Name) && label.Confidence != 0)
                    {
                        labels.Add(label.Name);
                        scores.Add(label.Confidence);
                    }
                    else
                    {
                        throw new Exception("Exception during AWS processing of image " + inputImageLocation);
                    }
                }

                classificationResult.ProcessingTimeMilliseconds = endTime.Subtract(startTime).TotalMilliseconds;
                classificationResult.InputLabel          = pictureName;
                classificationResult.ReturnedLabel1      = labels[0];
                classificationResult.ReturnedConfidence1 = scores[0];
                classificationResult.ReturnedLabel2      = labels[1];
                classificationResult.ReturnedConfidence2 = scores[1];
                classificationResult.ReturnedLabel3      = labels[2];
                classificationResult.ReturnedConfidence3 = scores[2];
                classificationResult.FilePath            = inputImageLocation;
            }
            catch (Exception e)
            {
                throw e;
            }

            return(classificationResult);
        }