Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Система контроля транспортного потока на закрытую территорию.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.58 Mб
Скачать

4 Разработка приложения для распознавания автомобильных номеров

Для функционирования всей системы необходимо создать программу способную распознавать номер с изображения. Для создания работающего прототипа такой программы, была выбрана платформа VisualStudio и объектно-ориентированный язык C#, и сформулирована задача: При запуске программы, ей передается ссылка на изображение находящиеся на сервере, программа распознает автомобильный номер по изображению и выводит его консоль, после чего закрывается.

Запускаться программа будет из PHP файла отвечающего за добавления записи в журнал въездов на территорию, после получения POST запроса данным файлом. Непосредственно запуск происходит PHP кодом:

$path = "FillBitmap.exe $uploadfile";

$numberCar = Exec($path);

Где FillBitmap.exe – название программы, $uploadfile – переменная, содержащая в себе ссылку на изображение хранящиеся на сервере, Exec – запуск программы без вывода строки, $numberCar – переменная, в которую запишется номер после запуска и распознавания номера автомобиля.

Для решения поставленной задачи был создан проект, в котором имеется форма и текстовое поле. Для распознавания текста использовалась библиотека Tesseract OCR. [11]

Для добавления возможности приема параметров программой в коде программы создадим массив args, который будет заполняться в конструкторе формы при инициализации компонентов:

private string[] args;

public Form1(string[] args)

{

InitializeComponent ();

this.args = args;

}

Программа должна автоматически распознавать изображение, на которое передана ссылка через аргументы. Для этого распознавание необходимо производить в методе загрузки формы Form1_Load. Но перед распознаванием необходимо проверить, что передан минимум 1 аргумент.

private void Form1_Load(object sender, EventArgs e)

{

if (args.Length != 0)

{

var s = args[0];

try

{

var bmp = new Bitmap(s);

var ocr = new Ocr();

var tessocr = new Tesseract();

tessocr.Init(null, "eng", false);

var text = ocr.DoOcrNormal(bmp, "eng");

var outputString = ConvertStringFormate(text[0].Text);

textBoxInput.Text = outputString;

Console.Write(outputString);

Application.Exit();

}

catch (Exception)

{

Console.Write(@"NoImage");

Application.Exit();

}

else

{

Console.Write(@"NoNumbers");

Application.Exit();

}

}

Проверив, что имеется аргумент, создается объект типа Bitmap , используя ссылку на изображение, хранящуюся в аргументе. Bitmap – это объект, используемый для работы с изображениями, определяемых данными о пикселях. После создания объекта данного типа, для распознания изображения хранящегося в нем, создаётся копия класса Ocr, описанного в программе, и копия класса Tessract используя подключённые библиотеки.

public class Ocr

{

public List<Word> DoOcrNormal(Bitmap image, string lang)

{

var ocr = new Tesseract();

ocr.Init(null, lang, false);

var result = ocr.DoOCR(image, Rectangle.Empty);

return result;

}

}

Определив настройки распознавания tessocr.Init(null, "eng", false). Распознаем и распознанный текст запишем в переменную text. Теперь программа выведет в консоль эту переменную, чтобы файл PHP запустивший программу мог получить его. После чего приложение закроется.