Beispiel #1
0
 private void buttonwrite_badge_template_Click(object sender, EventArgs e)
 {
     SettingsReader.WriteBadgeSettings(recognizedLog.Text);
 }
Beispiel #2
0
        public User GetRecognizedUserModel()
        {
            var user = new User();

            var bestImage = _faces.GetBestValue();

            if (bestImage != null)
            {
                Bitmap bitmap = bestImage.DetectedImage.Bitmap;

                using (MemoryStream m = new MemoryStream())
                {
                    bitmap.Save(m, ImageFormat.Jpeg);
                    byte[] imageBytes = m.ToArray();
                    user.Photo = Convert.ToBase64String(imageBytes);
                }

                var encoderParams = new EncoderParameters(1)
                {
                    Param = { [0] = new EncoderParameter(Encoder.Quality, 50L) }
                };

                var jpegCodec = (from codec in ImageCodecInfo.GetImageEncoders()
                                 where codec.MimeType == "image/jpeg"
                                 select codec).Single();

                using (MemoryStream m = new MemoryStream())
                {
                    bitmap.Save(m, jpegCodec, encoderParams);
                    byte[] imageBytes = m.ToArray();
                    user.Photo48 = Convert.ToBase64String(imageBytes);
                }
            }

            var bestFace =
                _recognizedFaces
                .OrderBy(x => x.FaceAttributes.Blur.Value)
                .ThenBy(x => x.FaceAttributes.Noise.Value)
                .ThenByDescending(x => x.FaceAttributes.Smile)
                .ThenByDescending(x => x.FaceAttributes.Emotion.Happiness)
                .First();

            bestFace.FaceAttributes.Age    = Math.Floor(_recognizedFaces.Average(x => x.FaceAttributes.Age));
            bestFace.FaceAttributes.Gender = _recognizedFaces.GroupBy(x => x.FaceAttributes.Gender).OrderByDescending(s => s.Count()).First().Key;
            user.Age       = (byte)Math.Floor(bestFace.FaceAttributes.Age);
            user.Gender    = bestFace.FaceAttributes.Gender;
            user.Glasses   = bestFace.FaceAttributes.Glasses.ToString();
            user.Smile     = bestFace.FaceAttributes.Smile;
            user.Happiness = bestFace.FaceAttributes.Emotion.Happiness;
            user.Anger     = bestFace.FaceAttributes.Emotion.Anger;
            user.Contempt  = bestFace.FaceAttributes.Emotion.Contempt;
            user.Disgust   = bestFace.FaceAttributes.Emotion.Disgust;
            user.Fear      = bestFace.FaceAttributes.Emotion.Fear;
            user.Neutral   = bestFace.FaceAttributes.Emotion.Neutral;
            user.Sadness   = bestFace.FaceAttributes.Emotion.Sadness;
            user.Surprise  = bestFace.FaceAttributes.Emotion.Surprise;

            //var alphaNumeric = new Regex("[^a-zA-Z0-9]");

            var template = SettingsReader.ReadBadgeSettings();

            if (template != null && _recognizedTexts != null && _recognizedTexts.Any())
            {
                int iregion = 0;
                foreach (var region in template.Regions)
                {
                    int iline = 0;
                    foreach (var line in region.Lines)
                    {
                        int iword = 0;
                        foreach (var word in line.Words)
                        {
                            if (!string.IsNullOrEmpty(word.FieldName))
                            {
                                var values = _recognizedTexts
                                             .Where(x => x.Regions[iregion].Lines.Length >= iline + 1 && x.Regions[iregion].Lines.All(y => y.Words.Length >= iword + 1))
                                             .Select(x => x.Regions[iregion].Lines[iline].Words[iword].Text.Trim()).ToList();

                                if (values.Any())
                                {
                                    var mostFrequenceValue = values.GroupBy(q => q).OrderByDescending(gp => gp.Count()).Select(g => g.Key).First();
                                    if (word.FieldName.Equals("firstName", StringComparison.OrdinalIgnoreCase))
                                    {
                                        user.FirstName = mostFrequenceValue.ToTitleCase();
                                    }
                                    else if (word.FieldName.Equals("lastName", StringComparison.OrdinalIgnoreCase))
                                    {
                                        user.LastName = mostFrequenceValue.ToTitleCase();
                                    }
                                    else if (word.FieldName.Equals("company", StringComparison.OrdinalIgnoreCase))
                                    {
                                        user.Company = mostFrequenceValue.ToTitleCase();
                                    }
                                }
                            }
                            iword++;
                        }
                        iline++;
                    }
                    iregion++;
                }


                var parsed = new List <string>();
                foreach (var recognizedText in _recognizedTexts)
                {
                    foreach (var recognizedTextRegion in recognizedText.Regions)
                    {
                        foreach (var line in recognizedTextRegion.Lines)
                        {
                            foreach (var lineWord in line.Words)
                            {
                                parsed.Add(lineWord.Text.ToTitleCase());
                            }
                        }
                    }
                }
                parsed          = parsed.Distinct().ToList();
                user.ParsedText = string.Join(", ", parsed.ToArray());

                return(user);
            }
            return(null);
        }
Beispiel #3
0
        private void button_read_badge_Click(object sender, EventArgs e)
        {
            var template = SettingsReader.ReadBadgeSettings();

            recognizedLog.Text = JsonConvert.SerializeObject(template, Formatting.Indented);
        }