Были импортированы три библиотеки, matplotlib для построения графиков, pytesseract для считывания определенного номера в текст, cv2 – библиотека OpenCV для работы с изображением и использования готовых реализаций алгоритмов компьютерного зрения. Исходные данные для программы — это изображение с автомобилем. В программе реализованы четыре функции:
- open_img(img_path) – загрузка изображения в программу, используя методы библиотеки cv2
- carplate_detection(img, classifier) – определение автомобильного номера на изображении, первый параметр изображение в RBG формате, вторым обученный каскад Хаара
- enlarge_image(img, scale_percent) – увеличение изображения, для более лучшего считывания текста. Первый параметр изображение с автомобилем, второй коэффициент увеличения изображения
- main() – основная функция
Сначала происходит загрузка изображения в программу и перевод формата в RGB. После создание каскадного классификатора для определения автомобильного номера. Для этого используется метод cv2.CascadeClassifier, в него передается путь к обученному каскаду Хаара. При помощи метода detectMultiScale в функции carplate_detection происходит обнаружение автомобильного номера. Результатом работы метода является список прямоугольных областей в одной, из которых находится автомобильный номер. Почти всегда это последний элемент списка, так как в работе метода сохраняются отброшенные проанализированные окна, а окно с автомобильным номером является не отброшенным алгоритмом и остается последним. Элемент списка представляет собой координаты, ширину и высоту области. Далее изображение переводится в серые тона и увеличивается его размер в функции enlarge_image. По итогу имеется улучшенное изображение, в серых тонах автомобильного номера.
Это изображение передается tesseract для считывания текста. В конце рисуется поверх изображения зеленая прямоугольная рамка со считанным номером над настоящим номером автомобиля.