private void Button_Click(object sender, RoutedEventArgs e)
        {
            Console.WriteLine("show");
            string defaultURL = @"C:\Users\Admin\Desktop\images\anh-tra-sua.jpg";
            String photo      = txtURL.Text == string.Empty ? defaultURL : txtURL.Text;

            var rekognitionClient = new AmazonRekognitionClient();
            var source            = ToByteStream(photo);
            var request           = new DetectModerationLabelsRequest()
            {
                Image = source
            };

            try
            {
                var response = rekognitionClient.DetectModerationLabels(request);
                Console.WriteLine("Detected labels for " + photo);
                int count = 1;
                txtInfo.Text = string.Empty;
                foreach (ModerationLabel label in response.ModerationLabels)
                {
                    txtInfo.Text += count++ + "/" + label.Name + " - " + label.Confidence + "\n";
                }
            }
            catch (Exception)
            {
            }
        }
        internal DetectModerationLabelsResponse DetectModerationLabels(DetectModerationLabelsRequest request)
        {
            var marshaller   = new DetectModerationLabelsRequestMarshaller();
            var unmarshaller = DetectModerationLabelsResponseUnmarshaller.Instance;

            return(Invoke <DetectModerationLabelsRequest, DetectModerationLabelsResponse>(request, marshaller, unmarshaller));
        }
Example #3
0
    public static void Example()
    {
        String photo  = "input.jpg";
        String bucket = "bucket";

        AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();

        DetectModerationLabelsRequest detectModerationLabelsRequest = new DetectModerationLabelsRequest()
        {
            Image = new Image()
            {
                S3Object = new S3Object()
                {
                    Name   = photo,
                    Bucket = bucket
                },
            },
            MinConfidence = 60F
        };

        try
        {
            DetectModerationLabelsResponse detectModerationLabelsResponse = rekognitionClient.DetectModerationLabels(detectModerationLabelsRequest);
            Console.WriteLine("Detected labels for " + photo);
            foreach (ModerationLabel label in detectModerationLabelsResponse.ModerationLabels)
            {
                Console.WriteLine("Label: {0}\n Confidence: {1}\n Parent: {2}",
                                  label.Name, label.Confidence, label.ParentName);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }
        private void ConvertButton_Click(object sender, RoutedEventArgs e)
        {
            var source = ToBytesStream(@"C:\Users\A715-72\Desktop\cnm\AWS2_01\AWS2_01\img\page1\2.jpg");

            var client  = new AmazonRekognitionClient();
            var request = new DetectModerationLabelsRequest
            {
                Image = source
            };

            var respone = client.DetectModerationLabels(request);
            var n       = 360;

            foreach (var label in respone.ModerationLabels)
            {
                Label lb = new Label
                {
                    Content  = label.Name,
                    FontSize = 15,
                    Margin   = new Thickness(100, n, 0, 0)
                };
                n = n + 20;
                canvas.Children.Add(lb);
            }


            //myLabel.Content = respone.ModerationLabels;
        }
Example #5
0
        private void btnLoad_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog op = new OpenFileDialog();

            op.Title  = "Select a picture";
            op.Filter = "All supported graphics|*.jpg;*.jpeg;*.png|" +
                        "JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|" +
                        "Portable Network Graphic (*.png)|*.png";
            if (op.ShowDialog() == true)
            {
                imgPhoto.Source = new BitmapImage(new Uri(op.FileName));
            }

            String photo = imgPhoto.Source.ToString().Substring(8);

            Amazon.Rekognition.Model.Image image = new Amazon.Rekognition.Model.Image();
            try
            {
                using (FileStream 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)
            {
                return;
            }

            AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();

            DetectModerationLabelsRequest detectModerationLabelsRequest = new DetectModerationLabelsRequest()
            {
                Image         = image,
                MinConfidence = 60F
            };

            try
            {
                DetectModerationLabelsResponse detectModerationLabelsResponse = rekognitionClient.DetectModerationLabels(detectModerationLabelsRequest);
                List <Moderation> items = new List <Moderation>();

                foreach (ModerationLabel label in detectModerationLabelsResponse.ModerationLabels)
                {
                    items.Add(new Moderation()
                    {
                        Name = label.Name, Confidence = label.Confidence, ParentName = label.ParentName
                    });
                }
                lvModeration.ItemsSource = items;
            }
            catch (Exception)
            {
                Console.WriteLine("Error!!!");
                return;
            }
        }
        /// <summary>
        /// Initiates the asynchronous execution of the DetectModerationLabels operation.
        /// </summary>
        ///
        /// <param name="request">Container for the necessary parameters to execute the DetectModerationLabels operation.</param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        /// <returns>The task object representing the asynchronous operation.</returns>
        /// <seealso href="http://docs.aws.amazon.com/goto/WebAPI/rekognition-2016-06-27/DetectModerationLabels">REST API Reference for DetectModerationLabels Operation</seealso>
        public Task <DetectModerationLabelsResponse> DetectModerationLabelsAsync(DetectModerationLabelsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller   = new DetectModerationLabelsRequestMarshaller();
            var unmarshaller = DetectModerationLabelsResponseUnmarshaller.Instance;

            return(InvokeAsync <DetectModerationLabelsRequest, DetectModerationLabelsResponse>(request, marshaller,
                                                                                               unmarshaller, cancellationToken));
        }
Example #7
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 #8
0
        private void btnOCR_Click(object sender, EventArgs e)
        {
            if (textURL.Text == "")
            {
                MessageBox.Show("Vui lòng chọn hình ảnh để phân tích!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            Bitmap bmp = new Bitmap(textURL.Text);

            //if (bmp.Height>bmp.Width)
            //{
            //    // 200, 100 (khổ ngang) => 50,100 (khổ dọc)
            //    var sztmp = pb.Size;
            //    pb.Size = new Size(sztmp.Height, 370);
            //}
            pb.Image    = bmp;
            pb.SizeMode = PictureBoxSizeMode.StretchImage;

            var source = ToByteStream(textURL.Text);

            var client  = new AmazonRekognitionClient();
            var request = new DetectModerationLabelsRequest
            {
                Image         = source,
                MinConfidence = 50F
            };

            var response = client.DetectModerationLabels(request);

            if (response.ModerationLabels.Count == 0)
            {
                txtRes.Text = "No moderation label be found!";
                return;
            }

            var tmp = new StringBuilder();

            tmp.Append("There are some moderation label has found below: \r\n");
            foreach (var label in response.ModerationLabels)
            {
                tmp.Append(label.Name);
                tmp.Append("\t(" + label.Confidence.ToString() + "%)\r\n");
            }

            txtRes.Text = tmp.ToString();
            //MessageBox.Show(txtRes.Text);
        }
        public async Task <ModerationResponse> AnalyzeImage(MemoryStream imageStream)
        {
            using (var client = new AmazonRekognitionClient(Endpoint))
            {
                var request = new DetectModerationLabelsRequest()
                {
                    Image = new Image()
                    {
                        Bytes = imageStream
                    },
                    MinConfidence = 0 //do this so that scores are always returned?
                };

                var awsResponse = await client.DetectModerationLabelsAsync(request);

                var response = new ModerationResponse();

                if (awsResponse.HttpStatusCode != System.Net.HttpStatusCode.OK)
                {
                    response.Pass             = false;
                    response.ModerationScores = new[] { new ModerationScore()
                                                        {
                                                            Category = $"ServerError:{awsResponse.HttpStatusCode}", Score = 100
                                                        } };
                }
                else
                {
                    if (awsResponse.ModerationLabels.Any(s => s.Confidence >= 50))
                    {
                        response.Pass = false;
                    }
                    else
                    {
                        response.Pass = true;
                    }

                    response.ModerationScores = awsResponse.ModerationLabels
                                                .Select(m => new ModerationScore()
                    {
                        Category = $"{m.ParentName}:{m.Name}",
                        Score    = m.Confidence
                    });
                }

                return(response);
            }
        }
Example #10
0
        private void btn_DetectAdultContent_Click(object sender, EventArgs e)
        {
            txt_adultContent.Text = "";
            var source  = ToBytesStream($"{sourceAdultContent}");
            var client  = new AmazonRekognitionClient();
            var request = new DetectModerationLabelsRequest
            {
                Image = source
            };
            var response = client.DetectModerationLabels(request);

            txt_adultContent.Text = ($"Found {response.ModerationLabels.Count} labels: \n");
            foreach (var label in response.ModerationLabels)
            {
                txt_adultContent.Text += $"- {label.Name}\n";
            }
        }
        public List <ClassificationLabel> GetImageAnalysis(IAmazonRekognition rekognitionClient, string bucket, string s3Path)
        {
            var request = new DetectModerationLabelsRequest
            {
                Image = new Image
                {
                    S3Object = new S3Object
                    {
                        Bucket = bucket,
                        Name   = s3Path
                    }
                }
            };
            var response = rekognitionClient.DetectModerationLabelsAsync(request).Result;

            return(response.ModerationLabels.Select(x =>
                                                    new ClassificationLabel
            {
                Confidence = x.Confidence,
                Name = x.Name,
                ParentName = x.ParentName
            }).ToList());
        }
Example #12
0
        // snippet-start:[Rekognition.dotnetv3.DetectModerationLabelsExample]
        public static async Task Main(string[] args)
        {
            string photo  = "input.jpg";
            string bucket = "bucket";

            var rekognitionClient = new AmazonRekognitionClient();

            var detectModerationLabelsRequest = new DetectModerationLabelsRequest()
            {
                Image = new Image()
                {
                    S3Object = new S3Object()
                    {
                        Name   = photo,
                        Bucket = bucket,
                    },
                },
                MinConfidence = 60F,
            };

            try
            {
                var detectModerationLabelsResponse = await rekognitionClient.DetectModerationLabelsAsync(detectModerationLabelsRequest);

                Console.WriteLine("Detected labels for " + photo);
                foreach (ModerationLabel label in detectModerationLabelsResponse.ModerationLabels)
                {
                    Console.WriteLine($"Label: {label.Name}");
                    Console.WriteLine($"Confidence: {label.Confidence}");
                    Console.WriteLine($"Parent: {label.ParentName}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Example #13
0
        public DetectModerationLabelsResponse ImageModeration()
        {
            Image image = new Image();

            using (FileStream fs = new FileStream(filePath, 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();

            DetectModerationLabelsRequest detectModerationLabelsRequest = new DetectModerationLabelsRequest()
            {
                Image         = image,
                MinConfidence = 60F
            };

            DetectModerationLabelsResponse detectModerationLabelsResponse = rekognitionClient.DetectModerationLabels(detectModerationLabelsRequest);

            return(detectModerationLabelsResponse);
        }
Example #14
0
        private async Task <Boolean> ReadObjectDataAsync(String bucketName, String keyName, float confidence, String pendingimagesbucket, String quarantinedimagesbucket, String templatesBucket)
        {
            try
            {
                GetObjectRequest request = new GetObjectRequest
                {
                    BucketName = bucketName,
                    Key        = keyName
                };
                using (GetObjectResponse response = await s3EmailsClient.GetObjectAsync(request))
                {
                    MimeMessage           message         = MimeMessage.Load(response.ResponseStream);
                    MailAddressCollection mailAddresses   = (MailAddressCollection)message.From;
                    MailAddressCollection sendToAddresses = (MailAddressCollection)message.To;
                    emailTo = mailAddresses[0].Address;
                    if (sendToAddresses[0].ToString().ToLower().Contains("northnorthants"))
                    {
                        west = false;
                        Console.WriteLine("Processing email for North Northants from : " + emailTo);
                    }
                    else
                    {
                        Console.WriteLine("Processing email for West Northants from  : " + emailTo);
                    }
                    subject = message.Subject;
                    name    = message.From[0].Name;
                    int numOfAttachments = 0;
                    imageCheckPass = true;
                    foreach (MimeEntity attachment in message.Attachments)
                    {
                        if (!(attachment is MessagePart))
                        {
                            numOfAttachments++;
                            MimePart part     = (MimePart)attachment;
                            String   fileName = part.FileName;
                            if (!fileName.ToLower().Contains("pdf"))
                            {
                                try
                                {
                                    Stream objectStream = new MemoryStream();
                                    part.Content.DecodeTo(objectStream);
                                    byte[] attachmentArray = new byte[objectStream.Length];

                                    long attachmentLength = objectStream.Length;


                                    using (var imageStream = part.Content.Open())
                                    {
                                        PutObjectRequest putRequest = new PutObjectRequest()
                                        {
                                            InputStream = imageStream,
                                            BucketName  = pendingimagesbucket,
                                            Key         = fileName,
                                        };
                                        putRequest.Headers.ContentLength = attachmentLength;
                                        await s3Client.PutObjectAsync(putRequest);

                                        Console.WriteLine("Written to S3 : {0}", fileName);
                                    }
                                }
                                catch (Exception error)
                                {
                                    Console.WriteLine("ERROR : Processing Image : '{0}' ", error.Message);
                                    Console.WriteLine(error.StackTrace);
                                }

                                AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();

                                DetectModerationLabelsRequest detectModerationLabelsRequest = new DetectModerationLabelsRequest()
                                {
                                    Image = new Image()
                                    {
                                        S3Object = new Amazon.Rekognition.Model.S3Object()
                                        {
                                            Name   = fileName,
                                            Bucket = pendingimagesbucket
                                        },
                                    },
                                    MinConfidence = 60F
                                };

                                try
                                {
                                    DetectModerationLabelsResponse detectModerationLabelsResponse = await rekognitionClient.DetectModerationLabelsAsync(detectModerationLabelsRequest);

                                    Console.WriteLine("Detected labels");
                                    foreach (ModerationLabel label in detectModerationLabelsResponse.ModerationLabels)
                                    {
                                        if (!String.IsNullOrEmpty(label.ParentName))
                                        {
                                            Console.WriteLine("Found - Label: {0}\n Confidence: {1}\n Parent: {2}",
                                                              label.Name, label.Confidence, label.ParentName);
                                            if (label.Confidence > confidence)
                                            {
                                                Console.WriteLine("Rejected - Label: {0}\n Confidence: {1}", label.Name, label.Confidence);
                                                imageCheckPass = false;
                                            }
                                        }
                                    }

                                    try
                                    {
                                        if (imageCheckPass)
                                        {
                                            DeleteObjectRequest deleteRequest = new DeleteObjectRequest
                                            {
                                                BucketName = pendingimagesbucket,
                                                Key        = fileName
                                            };
                                            await s3Client.DeleteObjectAsync(deleteRequest);
                                        }
                                        else
                                        {
                                            Console.WriteLine("Image Rejection Started");
                                            try
                                            {
                                                Console.WriteLine("Clearing : Deleting " + fileName + " from : " + quarantinedimagesbucket);
                                                DeleteObjectRequest clearRequest = new DeleteObjectRequest
                                                {
                                                    BucketName = quarantinedimagesbucket,
                                                    Key        = fileName
                                                };
                                                await s3Client.DeleteObjectAsync(clearRequest);
                                            }
                                            catch (Exception) {}
                                            Console.WriteLine("Quarantining : Copying " + fileName + " to : " + quarantinedimagesbucket);
                                            CopyObjectRequest copyRequest = new CopyObjectRequest
                                            {
                                                SourceBucket      = pendingimagesbucket,
                                                SourceKey         = fileName,
                                                DestinationBucket = quarantinedimagesbucket,
                                                DestinationKey    = fileName
                                            };
                                            await s3Client.CopyObjectAsync(copyRequest);

                                            Console.WriteLine("Deleting : Deleting " + fileName + " from : " + pendingimagesbucket);
                                            DeleteObjectRequest deleteRequest = new DeleteObjectRequest
                                            {
                                                BucketName = pendingimagesbucket,
                                                Key        = fileName
                                            };
                                            await s3Client.DeleteObjectAsync(deleteRequest);

                                            Console.WriteLine("Deleting : Deleting " + fileName + " from : " + pendingimagesbucket);
                                            Console.WriteLine("Image Rejection Ended");
                                        }
                                    }
                                    catch (Exception error)
                                    {
                                        Console.WriteLine("ERROR : Moving/Deleting Image : " + error.Message);
                                        Console.WriteLine(error.StackTrace);
                                    }
                                }
                                catch (Exception e)
                                {
                                    Console.WriteLine(e.Message);
                                }
                            }
                        }
                        else
                        {
                            Console.WriteLine("Ignoring attachment");
                        }
                    }
                    Console.WriteLine("Num of attachments : {0}", numOfAttachments);


                    emailBody = message.HtmlBody;
                    for (int currentHeader = 0; currentHeader < message.Headers.Count; currentHeader++)
                    {
                        if (message.Headers[currentHeader].Field.ToString().Equals("X-SES-Spam-Verdict") && message.Headers[currentHeader].Value.ToString().Equals("PASS"))
                        {
                            spamCheckPass = true;
                        }
                        if (message.Headers[currentHeader].Field.ToString().Equals("X-SES-Virus-Verdict") && message.Headers[currentHeader].Value.ToString().Equals("PASS"))
                        {
                            virusCheckPass = true;
                        }
                    }
                    if (spamCheckPass && virusCheckPass && imageCheckPass)
                    {
                        emailPassedChecks = true;
                    }
                    else
                    {
                        emailBody = "Failed text";
                        try
                        {
                            GetObjectRequest objectRequest = new GetObjectRequest
                            {
                                BucketName = templatesBucket,
                                Key        = "email-unsafe-rejection.txt"
                            };
                            using (GetObjectResponse objectResponse = await s3TemplatesClient.GetObjectAsync(objectRequest))
                                using (Stream responseStream = objectResponse.ResponseStream)
                                    using (StreamReader reader = new StreamReader(responseStream))
                                    {
                                        emailBody = reader.ReadToEnd();
                                    }
                            if (!virusCheckPass)
                            {
                                emailBody = emailBody.Replace("AAA", "a virus");
                            }
                            else if (!spamCheckPass)
                            {
                                emailBody = emailBody.Replace("AAA", "spam");
                            }
                            else if (!imageCheckPass)
                            {
                                emailBody = emailBody.Replace("AAA", "inappropriate content in attachments");
                            }
                            else
                            {
                                emailBody = emailBody.Replace("AAA", "unknown");
                            }
                            emailBody = emailBody.Replace("DDD", name);
                        }
                        catch (AmazonS3Exception e)
                        {
                            Console.WriteLine("ERROR : Reading Email : '{0}' when reading rejection template", e.Message);
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("ERROR : An Unknown encountered : '{0}' when reading rejection template", e.Message);
                        }
                    }
                }
            }
            catch (AmazonS3Exception error)
            {
                Console.WriteLine("ERROR : Reading Email : '{0}' when reading email", error.Message);
                Console.WriteLine(error.StackTrace);
            }
            catch (Exception error)
            {
                Console.WriteLine("ERROR : An Unknown encountered : {0}' when reading email", error.Message);
                Console.WriteLine(error.StackTrace);
            }
            return(emailPassedChecks);
        }