- •Система контроля транспортного потока на закрытую территорию
- •Введение
- •1 Система распознавания автомобильных номеров Автомаршал
- •2 Алгоритмы распознавания и библиотеки по распознаванию текста
- •3 Взаимосвязь Unity3d и sql посредством php
- •4 Разработка приложения для распознавания автомобильных номеров
- •5 Разработка системы по контролю въезда на территорию
- •Список использованных источников
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 запустивший программу мог получить его. После чего приложение закроется.
