private void RecognitionOutput(IRecognitionResult result, string imageName) { dataGridViewResult.DataSource = result.Items; picBx.Image = result.DrawBorder2Image(); imageLogger = new ImageLogger(result, imageName); imageLogger.Save($@"Results/{imageName}.json"); }
public static void SaveToJson(this IRecognitionResult result, string path, string imageName) { var index = 0; foreach (var item in result.Items) { var xc = item.X; var yc = item.Y; var w = item.Width; var h = item.Height; var jsonObject = new RecognitionResultJsonObject { ImageName = imageName, Team = Constants.TeamName, Region = new Region { Main = new Main { TopLeft = new int[] { xc - w / 2, yc + h / 2 }.ToList(), BotRight = new int[] { xc + w / 2, yc - h / 2 }.ToList(), }, Alternative = new Alternative { Center = new int[] { xc, yc }.ToList(), Height = h, Width = w, }, EachPoint = new EachPoint[] { new EachPoint { Comment = "top-left, (x; y)", Point = new int[] { xc - w / 2, yc + h / 2 }.ToList(), }, new EachPoint { Comment = "top-right, (x; y)", Point = new int[] { xc + w / 2, yc + h / 2 }.ToList(), }, new EachPoint { Comment = "bottom-right, (x; y)", Point = new int[] { xc + w / 2, yc - h / 2 }.ToList(), }, new EachPoint { Comment = "bottom-left, (x; y)", Point = new int[] { xc - w / 2, yc - h / 2 }.ToList(), }, }.ToList() } }; Save(path, imageName, index++, jsonObject); } }
private void RecognizeButton_OnClick(object sender, RoutedEventArgs e) { if (!string.IsNullOrEmpty(this.FilePath)) { // Console.WriteLine(string.Join("\r\n", Directory.EnumerateFiles("./"))); using (TesseractEngine engine = new TesseractEngine(@"./tessdata", "rus", EngineMode.TesseractAndLstm)) { IRecognitionResult result = TessEngineWrapper.ReadFile(this.Pix, engine); SetMeanConfidence(result.MeanConfidence); DecodedText.Text = result.Text; } } }
public static Image DrawBorder2Image(this IRecognitionResult result) { var image = result.ImageBytes.ToImage(); using (var canvas = Graphics.FromImage(image)) { foreach (var item in result.Items) { using (var pen = new Pen(Brushes.GreenYellow, image.Width / 100)) { canvas.DrawRectangle(pen, item.X, item.Y, item.Width, item.Height); canvas.Flush(); } } } return(image); }
public ImageLogger(IRecognitionResult result, string imageName) { obj = new RootObject(); obj.ImageName = imageName; obj.Team = "team6"; foreach (var item in result.Items) { var xc = item.X; var yc = item.Y; var w = item.Width; var h = item.Height; obj.Region = new Region(); obj.Region.Main = new Main(); obj.Region.Main.TopLeft = new List <int> { (xc - w / 2), (yc + h / 2) }; obj.Region.Main.BotRight = new List <int> { (xc + w / 2), (yc - h / 2) }; obj.Region.Alternative = new Alternative(); obj.Region.Alternative.Center = new List <int> { xc, yc }; obj.Region.Alternative.Width = w; obj.Region.Alternative.Height = h; obj.Region.EachPoint = new List <EachPoint> { new EachPoint("top-left, (x; y)", new List <int> { (xc - w / 2), (yc + h / 2) }), new EachPoint("top-right, (x; y)", new List <int> { (xc + w / 2), (yc + h / 2) }), new EachPoint("bottom-right, (x; y)", new List <int> { (xc + w / 2), (yc - h / 2) }), new EachPoint("bottom-left, (x; y)", new List <int> { (xc - w / 2), (yc - h / 2) }) }; } }