public void OnTextRecognized() { //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(); var mostFrequenceValue = values.GroupBy(q => q).OrderByDescending(gp => gp.Count()).Select(g => g.Key).First(); InvokeGuiThread(() => { recognizedLog.AppendText(string.Format("\n {0}: {1}", word.FieldName, mostFrequenceValue)); }); } iword++; } iline++; } iregion++; } } }
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); }
private void button_read_badge_Click(object sender, EventArgs e) { var template = SettingsReader.ReadBadgeSettings(); recognizedLog.Text = JsonConvert.SerializeObject(template, Formatting.Indented); }