private void LoadRegister(string fileName) { registerPV.Image = PictureView.LoadPlaceholder(); debugButton.Enabled = false; nextRegisterButton.Enabled = false; selectRegisterButton.Enabled = false; cell1 = null; cell2 = null; imageFileName = fileName; Thread worker = new Thread(new ThreadStart(delegate { originalImage = ImageUtil.ToBlackAndWhite(ImageUtil.LoadImage(fileName)); currentTable = TableOCR.Program.RecognizeTable(originalImage); if (currentTable.IsEmpty()) { registerPV.Invoke(new EventHandler(delegate { MessageBox.Show("Не удалось распознать таблицу"); })); } Bitmap processedImage = new Bitmap(originalImage); Graphics g = Graphics.FromImage(processedImage); currentTable.ForEach(table => { table.DrawTable(g, new Pen(Color.Red, 2)); }); g.Dispose(); registerPV.Image = processedImage; this.Invoke(new EventHandler(delegate { this.Text = fileName; })); debugButton.Invoke(new EventHandler(delegate { debugButton.Enabled = true; })); selectRegisterButton.Invoke(new EventHandler(delegate { selectRegisterButton.Enabled = true; })); nextRegisterButton.Invoke(new EventHandler(delegate { nextRegisterButton.Enabled = true; })); })); worker.IsBackground = true; worker.Start(); }
private void ProcessNextImage() { Util.NewThread(() => { registerPV.Image = PictureView.LoadPlaceholder(); currentFileName = NextImageName(); this.Text = currentFileName; origImage = ImageUtil.LoadImage(currentFileName); bwImage = ImageUtil.ToBlackAndWhite(origImage); currentImage = new Bitmap(bwImage); currentTable = TableOCR.Program.RecognizeTable(currentImage); Graphics g = Graphics.FromImage(currentImage); Pen p = new Pen(Color.FromArgb(255, 255, 0, 0), 2); currentTable.ForEach(table => table.DrawTable(g, p)); g.Dispose(); registerPV.Image = currentImage; }); }