//МЕТОДЫ, ИСПОЛЬЗУЕМЫЕ ДЛЯ СОЗДАНИЯ ЭТАЛОНОВ //---------------------------------------------------------------- //получить txt файлы для картинок с конкретными символами в папке private void CreateEtalonMatrix(object sender, EventArgs e) { //настроика диалога FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog(); DialogResult result = folderBrowserDialog.ShowDialog(); if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(folderBrowserDialog.SelectedPath)) { string[] files = Directory.GetFiles(folderBrowserDialog.SelectedPath); foreach (string file in files) { //считываем изображение из файла System.Drawing.Bitmap image = new Bitmap(file); //произведем бинаризацию изображения BinarizedImage binarizedImage = new BinarizedImage(image); //матрица эталонная для символа byte[,] etalonArray = MyTextRecognizer.CreateMatrix_16X16(binarizedImage); string fileName = Path.GetFileName(file); fileName = fileName.Replace(".png", ""); MyArraySerializer.SerializeArray(etalonArray, new StreamWriter(txtPath + fileName + ".txt")); } } }
//выбрать из проводника изображение для распознавания private void chooseImageFromExplorer(object sender, EventArgs e) { //настроика диалога openFileDialog.InitialDirectory = "c:\\"; openFileDialog.Filter = "png files (*.png)|*.png|All files (*.*)|*.*"; openFileDialog.FilterIndex = 2; openFileDialog.RestoreDirectory = true; if (openFileDialog.ShowDialog() == DialogResult.OK) { //путь к файлу String filePath = openFileDialog.FileName; //считываем изображение из файла System.Drawing.Bitmap image = new Bitmap(filePath); //очистим полотно //canvas.Clear(Color.FromArgb(110, 110, 110)); //отрисуем картинку на полотне //canvas.DrawImage(image, new PointF(20, 20)); //бинаризация изображения BinarizedImage binarizedImage = new BinarizedImage(image); //отрисуем бинаризованную картинку на полотне //canvas.DrawImage(binarizedImageBitmap, new PointF(20, binarizedImageBitmap.Size.Height+40)); //imageSaver.Save(binarizedImage.GetBitmap(), "binarizedImage.png"); //моздаем объект - распознаватель MyTextRecognizer recognizer = new MyTextRecognizer(); //разделение изображения на отдельные символы List <Symbol> symbols = MyTextRecognizer.GetSymbols(binarizedImage); //результат распознавания recognitionResultTextbox.Text = ""; int count = 0; foreach (Symbol symbol in symbols) { symbol.Print(); Console.WriteLine(); recognizer.RecognizeSymbol(symbol); recognitionResultTextbox.Text = recognizer.; count += 1; } // //recognitionResultTextbox.Text = MyTextRecognizer.RecognizeSymbol(MyTextRecognizer.CreateMatrix_16X16(binarizedImage)); } }