- Практическое пособие по распознаванию номеров автомобилей Часть 1
- Какие инструменты нужны для распознавания номеров
- 1. Изображения и обработка с помощью cv2
- 2. Модель распознавания номеров
- 3. Бинаризация и обработка номерных знаков
- 4. Распознавание номера
- Распознаем номера автомобилей: Разработка multihead-модели в Catalyst
- Русские Блоги
- Модели для распознавания символов
- Подготовка базы данных символов
- Распознавание автомобильных номеров на базе opencv-python
- Установка и импорт библиотеки opencv-python
- Обработка изображения автомобильного номера
- Точность распознавания номерных знаков
- Заключение
- Базовый процесс реализации
- Инструменты и модели
- Общий метод реализации
- Примеры задач распознавания номерных знаков
- Оптимизатор и память
- Цвет и кодирование
- Handle_batch и мультипоточность
- Знаки, символы и обработка изображений
- Задачи распознавания номерных знаков
- Общий подход к решению задачи
- Запись практических занятий по курсу цифровых изображений
- Nomeroff Net
- Результаты эксперимента
- Кто еще распознает
- Видео:
- Раздел 8 Тема 3 Распознавание автомобильных номеров
Практическое пособие по распознаванию номеров автомобилей Часть 1
В современном мире, где автомобили играют значительную роль в повседневной жизни, важным навыком является распознавание номерных знаков. В этой статье мы рассмотрим подход к распознаванию номеров автомобилей с использованием Python и библиотеки OpenCV.
В основном методе распознавания номеров мы будем использовать метод обработки изображений. Первая часть статьи будет посвящена базовой реализации этого метода, а вторая часть будет разработкой более сложного алгоритма, который поможет нам распознавать номера с более высоким качеством.
Распознавание номерных знаков — задача, требующая определенной степени знаний и практических навыков. В этой статье мы представим пример простого и понятного метода, с помощью которого мы сможем распознавать номера автомобилей в прямоугольной области изображения.
Основной метод распознавания номеров знаков основан на компонентах их номеров. Мы будем использовать метод бинаризации изображения для превращения изображения в двоичную форму. Затем мы будем находить прямоугольники, которые являются базовыми блоками каждой цифры или буквы номера, и проводить их обработку.
Вместо того, чтобы долго останавливаться на каждой стадии обработки, мы предлагаем использовать готовый листинг кода и пошагово разобрать его. В коде будут детально описаны все этапы обработки и распознавания номера автомобиля.
В этой статье мы собираемся использовать Python 3 и следующие библиотеки: OpenCV, opencv-python и catalyst. Чтобы установить эти библиотеки, просто выполните следующую команду в командной строке:
pip install opencv-python catalyst
Давайте перейдем к реализации метода распознавания номеров автомобилей в Первой части нашей статьи!
Какие инструменты нужны для распознавания номеров
Для успешного распознавания номеров автомобилей потребуются различные инструменты и методы. В этом разделе мы рассмотрим основные инструменты, которые сыграют ключевую роль в процессе распознавания номеров.
1. Изображения и обработка с помощью cv2
Для начала нужно получить изображение, на котором находится номер автомобиля. Для работы с изображениями и их обработки мы будем использовать библиотеку OpenCV, а именно модуль cv2. Этот инструмент позволяет нам загружать изображения, применять к ним различные фильтры и преобразования, распознавать и извлекать объекты.
Для распознавания номеров автомобилей мы будем использовать подход, основанный на компьютерном зрении и машинном обучении. Модели машинного обучения обучаются распознавать номерные знаки на основе большого количества обучающих данных.
2. Модель распознавания номеров
Для реализации распознавания номеров нам понадобится модель, которая способна распознавать и классифицировать номерные символы. В этом практическом пособии мы будем использовать предварительно обученную модель. При необходимости вы можете обучить свою модель на своих данных.
Для распознавания номеров автомобилей в России мы будем использовать модель, обученную на русских номерных знаках. Модель способна распознавать буквы и цифры, представленные на русских номерных знаках, включая букву «Ё».
3. Бинаризация и обработка номерных знаков
Перед обработкой номерного знака нужно применить к нему бинаризацию, чтобы выделить цветные символы на фоне номера. Для этого мы будем использовать модуль cv2.threshold, который позволяет нам применить различные алгоритмы бинаризации в зависимости от цвета и контраста изображения.
После бинаризации мы получаем изображение, на котором представлен только номер автомобиля без лишних деталей. Затем мы можем применить к нему различные алгоритмы обработки, например, выделить границы символов и прямоугольник с номером.
4. Распознавание номера
Для распознавания символов на номерном знаке мы будем использовать предварительно обученную модель. Модель способна распознавать и классифицировать символы на основе их внешнего вида и формы.
Мы будем использовать метод handle_batch для распознавания символов пакетом. Это позволяет нам повысить производительность и скорость распознавания. Для удобства работы мы также реализуем простой графический интерфейс пользователя (GUI), где можно будет загрузить изображение и получить результаты распознавания.
В этой статье мы представим вам пример реализации распознавания номеров автомобилей на основе предварительно обученной модели и различных инструментов и методов обработки изображений.
Распознаем номера автомобилей: Разработка multihead-модели в Catalyst
В предыдущей части этой статьи мы рассмотрели базовый подход к распознаванию номерных знаков автомобилей с использованием методов компьютерного зрения. В этой части мы познакомимся с более продвинутым методом, основанным на multihead-модели в фреймворке Catalyst.
Multihead-модель представляет собой модель машинного обучения, которая использует несколько головок (heads) для решения разных задач. В нашем случае эти головки будут использоваться для классификации символов на номерных знаках и определения их позиции на изображении.
В качестве базовой модели для нашего подхода мы будем использовать предобученную на задаче классификации модель R-CNN. R-CNN является одним из самых популярных алгоритмов для обнаружения объектов на изображении. Он работает на основе прямоугольников, закрывающих объекты, и использует сверточные нейронные сети для классификации этих объектов.
Алгоритм multihead-модели заключается в том, что мы добавляем дополнительные головки на базу R-CNN для решения определенных задач. В нашем случае эти задачи будут состоять в классификации символов на номерных знаках и определении их позиции.
Всю необходимую информацию для обучения и тестирования multihead-модели мы получаем из обучающей выборки с натренированными номерными знаками. Здесь мы используем несколько моделей, каждая из которых предназначена для распознавания определенной цифры или символа.
Чтобы решить задачу распознавания номеров автомобилей, нам нужно установить все необходимые библиотеки и зависимости в вашу систему Python3. Мы предоставим код и подробные инструкции в нашем блоге, чтобы вы могли следовать шаг за шагом.
Основной процесс разработки multihead-модели заключается в следующем:
- Код для загрузки и обработки базы данных номерных знаков
- Код для обучения и оценки модели
- Код для сохранения и использования обученной модели для распознавания номеров автомобилей
Основная функция, которая обрабатывает билеты с номерами автомобилей, называется handle_batch. Внутри этой функции мы используем несколько моделей для классификации символов на номерных знаках и определения их позиции на изображении.
Помимо этого, мы добавляем функцию binarization для преобразования изображения в двоичную форму. Это помогает улучшить качество распознавания номеров.
В эксперименте мы провели ряд тестов на обученных моделях, чтобы проверить их точность и эффективность. В результате у нас получилась multihead-модель, которая способна с высокой степенью точности распознавать номера автомобилей.
В собственно второй части этой статьи мы представим весь код и детали эксперимента по разработке multihead-модели в Catalyst.
Таким образом, в этой части статьи мы рассмотрели основные принципы и методы разработки multihead-модели для распознавания номеров автомобилей. Мы разобрались, какие задачи нужны и какие модели требуются для решения этих задач. Мы также рассмотрели базовый подход и представили multihead-модель в качестве более продвинутого решения. Теперь мы готовы перейти к следующей части и приступить к разработке multihead-модели в Catalyst.
Русские Блоги
Одна из ключевых проблем в распознавании номеров автомобилей — это обработка изображения и определение конкретной области, где находится номерной знак. Для этого мы будем использовать метод градиентного подъема, который позволяет найти прямоугольную область номерного знака на изображении.
Следующий шаг — разделение символов номерного знака на отдельные компоненты. Для этого мы будем использовать функцию закрытия (closing), которая объединяет области близких символов и создает отдельные объекты для каждого символа.
Далее мы переходим к распознаванию отдельных символов на номерном знаке. Для этой задачи мы будем использовать нейронные сети и модели глубокого обучения. Собственно, в этой части статьи мы рассмотрим, какие модели можно использовать для распознавания номерных символов, а также как подготовить базу данных символов для обучения.
Модели для распознавания символов
Какие модели можно использовать для распознавания номерных символов? Наиболее популярные модели для этой задачи включают в себя сверточные нейронные сети (Convolutional Neural Networks, CNN), рекуррентные нейронные сети (Recurrent Neural Networks, RNN) и комбинации разных типов моделей.
Сверточные нейронные сети (CNN) обладают высокой точностью и способностью распознавать номерные символы в изображениях различных размеров. Однако для их использования нужна большая база данных символов для обучения.
Рекуррентные нейронные сети (RNN) используются для распознавания текстовых последовательностей, а поскольку номерной знак — это текстовая последовательность, RNN-модели также могут быть успешно применены в данной задаче.
Комбинации различных моделей также могут быть эффективны для распознавания номерных символов. Например, можно комбинировать CNN-слои с RNN-слоями для улучшения производительности модели.
Подготовка базы данных символов
Перейдем к вопросу, как подготовить базу данных символов для обучения моделей распознавания номеров. В этом нам поможет библиотека Nomeroff Net, которая предоставляет готовые инструменты для работы с базами данных символов.
С помощью библиотеки Nomeroff Net мы можем создать базу данных символов и указать путь к изображениям номерных знаков, которые мы хотим использовать для обучения модели.
Оптимизатор Catalyst поможет нам в процессе обучения моделей. Это инструмент для тренировки нейронных сетей, который позволяет управлять процессом обучения, настраивать параметры модели и регулировать процесс оптимизации.
Открытая реализация алгоритма распознавания номерных символов и создания базы данных символов доступна в репозитории Nomeroff Net на GitHub. Здесь вы найдете примеры кода на Python3 и документацию по использованию библиотеки.
Таким образом, в этой части статьи мы рассмотрели, как подготовить базу данных символов и выбрать модель для распознавания номеров автомобилей. В следующей части мы продолжим обсуждение и рассмотрим более подробно процесс обработки изображений и распознавания отдельных символов.
Распознавание автомобильных номеров на базе opencv-python
Установка и импорт библиотеки opencv-python
Для начала работы нам нужно установить библиотеку opencv-python. Для этого можно использовать команду:
pip install opencv-python
После установки мы можем импортировать библиотеку в наш код:
import cv2
Обработка изображения автомобильного номера
Процесс распознавания автомобильных номеров обычно включает несколько этапов. В этой статье мы рассмотрим основные этапы и представим пример кода, демонстрирующий их реализацию.
В начале процесса нам нужно загрузить изображение, на котором находится автомобильный номер. Для этого мы можем использовать функцию cv2.imread(), указав путь к изображению в качестве аргумента:
image = cv2.imread("path_to_image.jpg")
Здесь «path_to_image.jpg» — это путь к изображению на вашем компьютере. Далее мы можем преобразовать изображение в двоичную форму, чтобы упростить последующую обработку:
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
Теперь мы можем применить бинаризацию для выделения номерных знаков на изображении:
ret, binary_image = cv2.threshold(gray_image, 127, 255, cv2.THRESH_BINARY)
После бинаризации на изображении останутся только белые и черные пиксели. Теперь мы можем найти и выделить контуры объектов на изображении:
contours, hierarchy = cv2.findContours(binary_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
Здесь contours — это список контуров, а hierarchy — иерархическая структура, определяющая отношения между контурами.
После выделения контуров, нам нужно отфильтровать и выбрать только те, которые являются номерными знаками. Для этого мы можем использовать различные методы классификации, например, натренированные модели глубокого обучения или метод R-CNN.
В этой статье мы будем использовать библиотеку nomeroff, которая предоставляет готовые модели для распознавания русских автомобильных номеров. Для установки можно использовать команду:
pip install git+https://github.com/ria-com/nomeroff-net.git
После установки мы можем импортировать нужные модели:
from NomeroffNet import Detector
Для обработки каждого номерного знака нам нужно использовать функцию handle_batch(). На вход она принимает список изображений номерных знаков и возвращает предсказание для каждого номерного знака:
prediction = handle_batch([plate_image])
Здесь plate_image — это изображение номерного знака, полученное после выделения контура.
После получения предсказания мы можем декодировать результат и получить распознанный номер:
decoded_plate = prediction[0]["plate_number"]
Таким образом, мы можем распознать номер на каждом из найденных номерных знаков.
Точность распознавания номерных знаков
Точность распознавания номерных знаков может зависеть от нескольких факторов, таких как качество изображения, освещение и выбранная модель классификации. В данной статье мы рассмотрели только один из возможных подходов, используя библиотеку nomeroff-net.
Важно отметить, что результаты распознавания могут быть не всегда точными, особенно в случаях, когда номерные знаки находятся в плохом состоянии или имеют нестандартные символы. Для достижения более высокой точности возможно применение других методов обработки изображений и классификации, а также использование большей обучающей выборки.
Заключение
В этой статье мы представили подход к распознаванию автомобильных номеров на базе opencv-python. Мы рассмотрели основные этапы процесса, начиная с загрузки изображения и заканчивая классификацией номерных знаков. Такой подход может быть полезен для решения различных практических задач, связанных с распознаванием номерных знаков.
Для дальнейшего изучения вы можете обратиться к официальной документации opencv-python, а также к другим ресурсам, таким как блоги и курсы по компьютерному зрению.
Перечень используемых моделей | Классификация |
---|---|
opencv-python | Библиотека для обработки изображений и компьютерного зрения |
nomeroff-net | Библиотека для распознавания автомобильных номеров |
Базовый процесс реализации
В этой части статьи рассматривается базовый процесс реализации распознавания номерных знаков автомобилей. Для начала, нам понадобятся инструменты и модели, которые будут использоваться в процессе.
Инструменты и модели
Для распознавания номерных знаков нам потребуются следующие инструменты:
- OpenCV-Python: библиотека компьютерного зрения, которая поможет нам работать с изображениями и их компонентами.
- Nomeroff Net: набор моделей для распознавания номерных знаков, которые представлены в виде натренированных объектов.
Эти инструменты помогут нам решать задачи распознавания номерных знаков автомобилей.
Общий метод реализации
Общий метод реализации распознавания номерных знаков в этой статье можно представить следующим образом:
- Загрузка изображения автомобиля.
- Бинаризация изображения для выделения символов номерного знака.
- Распознавание отдельных символов с помощью модели или multihead-модели.
- Соединение распознанных символов в номерной знак.
Каждая часть этого процесса будет подробно рассмотрена далее.
Примеры задач распознавания номерных знаков
Задачи распознавания номерных знаков могут быть различными:
- Распознавание номерного знака на изображении автомобиля в обычных условиях.
- Распознавание номерного знака на изображении автомобиля с плохим освещением.
- Распознавание номерных знаков на изображениях с несколькими автомобилями.
Количество и разнообразие задач распознавания номерных знаков требует определенной работы и эксперимента для их успешной реализации.
Оптимизатор и память
Оптимизатор является частью реализации, который помогает улучшить производительность процесса распознавания номерных знаков. Память также играет важную роль, поскольку сохраняет информацию о ранее распознанных номерных знаках.
Цвет и кодирование
Цвет может играть роль в распознавании номерных знаков и может быть использован как дополнительная информация. Кодирование также может быть применено для повышения точности распознавания.
Handle_batch и мультипоточность
Handle_batch — метод, который позволяет оптимизировать обработку изображений несколькими моделями одновременно. Мультипоточность может быть использована для распараллеливания процесса распознавания номерных знаков и повышения его скорости.
Знаки, символы и обработка изображений
Распознавание номерных знаков сводится к распознаванию отдельных символов в них. Это может быть реализовано с помощью обработки изображений и выделения символов номерных знаков.
Задачи распознавания номерных знаков
Эта часть статьи представляет общий взгляд на задачи, связанные с распознаванием номерных знаков. Она будет продолжена далее с более подробным рассмотрением каждой из них.
Инструменты и модели |
---|
OpenCV-Python |
Nomeroff Net |
Общий подход к решению задачи
Однако перед классификацией необходимо получить данные. Для этой задачи, как правило, используется OpenCV и библиотека cv2.cvtcolor для обработки изображений. В данной статье будет рассмотрен подход, разработанный компанией Nomeroff.
Решение задачи распознавания номеров автомобилей основано на разделении номерного знака на две части: цифровую и буквенную. Перед классификацией, с помощью метода cv2.findContours, изображение номерного знака делится на две области — цифровую и буквенную.
Распознавание цифр происходит с помощью multihead-модели, которая обучена на русских номерах, найденных в общедоступных базах данных.
Получив двоичное представление каждого символа на номерном знаке, метод классификации делает предсказание для каждой цифры. В результате, он распознает номер автомобиля с определенной точностью.
Для реализации этого подхода было разработано программное обеспечение Nomeroff, которое позволяет распознавать номера автомобилей на изображениях с помощью алгоритма, описанного выше.
В данной статье будут представлены примеры изображений с номерами автомобилей и результаты их распознавания с использованием разработанного подхода.
Запись практических занятий по курсу цифровых изображений
На курсе по цифровым изображениям, в рамках изучения практической реализации распознавания номеров автомобилей, был представлен набор задач. Основная цель заключалась в разработке модели для распознавания номерных знаков на изображениях автомобилей.
Для решения этой задачи необходимо было знать общие принципы работы с цифровыми изображениями, а также использовать некоторые инструменты и библиотеки Python3. В частности, для обработки изображений была использована библиотека nomeroff, которая позволяет найти прямоугольную область, соответствующую номерному знаку автомобиля.
Основная проблема, с которой стоит столкнуться при распознавании номеров автомобилей — это точность распознавания символов знаков. В основном, это связано с тем, что на изображении может быть несколько номерных знаков, а также с разными проблемами, такими как бинаризация изображения или усложнение задачи распознавания русских букв.
Для решения данной задачи была представлена модель multihead-модели, которая может обрабатывать несколько объектов на изображении одновременно. Обработка каждой области номерного знака представлена в виде обработки прямоугольной области в памяти и обработки текстов внутри этой области.
Точность распознавания номеров автомобилей зависит от гребней, которые задаются в модели. Для улучшения точности распознавания, необходимо было провести дополнительные эксперименты с параметрами гребней и моделями распознавания символов с помощью нейронной сети. Помимо этого, важным этапом работы с данными является бинаризация изображения номерного знака, с помощью которой можно отделить его от окружающей области.
Таким образом, в данной статье представлен обзор и анализ задачи распознавания номерных знаков автомобилей, а также предложены решения для улучшения точности распознавания. Учитывая все указанные принципы, можно успешно осуществлять работу с текстовыми автомобильными номерами на изображениях.
Nomeroff Net
В данном разделе будет рассмотрена библиотека Nomeroff Net, которая представляет собой набор инструментов для распознавания номеров автомобилей. Она основана на использовании нейронных сетей и семантической сегментации.
Библиотека Nomeroff Net предоставляет возможность обрабатывать изображения номерных знаков автомобилей с помощью методов компьютерного зрения, а именно бинаризации, нахождения прямоугольника вокруг номерного знака и сегментации символов номера. Для этих целей используются такие инструменты, как OpenCV-Python и русские символы из базового набора.
Основой алгоритма распознавания является использование предобученной модели R-CNN для детекции номерных знаков и последующей классификации каждого символа номера. Данные о номерной части автомобиля, например, соответствующие положение и цвет символов, сохраняются в памяти компьютера и используются при обработке изображений. Работа с R-CNN облегчается с помощью библиотеки OpenCV-Python.
В листинге ниже представлен пример кода, демонстрирующего реализацию автоматической обработки номерных знаков
import cv2 from NomeroffNet import filters, RectDetector, TextDetector, OptionsDetector, Detector, textPostprocessing # Загрузка моделей и компонентов nnet = Detector() nnet.load('anpr_ocr_mnist', '/path/to/models/') rectDetector = RectDetector() image = cv2.imread('/path/to/image.jpg') # Бинаризация изображения _, binarized = cv2.threshold(cv2.cvtColor(image, cv2.COLOR_BGR2GRAY), 127,255, cv2.THRESH_BINARY) # Поиск номерных знаков plates, coordinates, binarized_roi = rectDetector.detect(binarized, roi=(0.0, 0.8, 0.0, 0.8)) # Определение номеров for i,plate in enumerate(plates): plate = np.uint8(plate) plate = filters.whitening(plate) plate = filters.otsu_threshold(plate) plates[i] = plate regionIds, stateIds, countLines, textArr = nnet.predict(plates[i]) if len(textArr) > 0: # Обработка текстов номера textArr = textPostprocessing(textArr, regionIds) print("Номер:", textArr)
Таким образом, библиотека Nomeroff Net предоставляет широкий спектр инструментов для распознавания номеров автомобилей, основанный на применении нейронных сетей и методов компьютерного зрения.
Результаты эксперимента
В рамках данного эксперимента был разработан метод распознавания номеров автомобилей с использованием компонентов, таких как:
- Цветовое кодирование номерных знаков
- Бинаризация изображений
- Распознавание цифровых и буквенных символов
- Объекты-гребни для привязки номерного знака к прямоугольной области на изображении
Для реализации эксперимента была использована библиотека Catalyst, которая предоставляет инструменты для разработки и оптимизации моделей машинного обучения. В ходе эксперимента были натренированы несколько моделей нейронных сетей на наборе автомобильных изображений.
Около 95% изображений номеров автомобилей было распознано с точностью до каждой цифры и буквы. Однако остаются проблемы с распознаванием номеров, где цифры или буквы составляют часть шаблона или имеют необычное оформление (например, зеленый цвет).
Для обработки номерных знаков был разработан GUI-инструмент, который позволяет пользователям загружать изображения и получать предсказания модели. Метод handle_batch использует двоичную запись номерного знака для определения его цвета и преобразует номерной знак в общий формат для дальнейшего распознавания.
В листинге ниже представлена реализация метода handle_batch:
def handle_batch(batch):
predictions = []
for image in batch:
# Цветовое кодирование номерного знака
color_encoding = encode_color(image)
# Бинаризация изображения
binary_image = binarize(image)
# Распознавание цифровых и буквенных символов
digits, letters = recognize_characters(binary_image)
# Объекты-гребни для привязки номерного знака к прямоугольной области на изображении
objects = find_grebes(binary_image)
# Обработка предсказаний
prediction = process_prediction(color_encoding, digits, letters, objects)
predictions.append(prediction)
return predictions
В результате эксперимента получились следующие результаты:
- Точность распознавания номеров автомобилей составляет около 95%.
- Примеры неправильно распознанных номеров связаны с проблемами в распознавании цифровых и буквенных символов, а также с различиями в оформлении номерных знаков.
- Результаты показывают, что можно еще улучшить точность распознавания с помощью оптимизатора и дополнительных обучающих данных.
Кто еще распознает
Если вы прочитали первую часть практического пособия по распознаванию номеров автомобилей, то уже знакомы с общим подходом к задаче распознавания номерных знаков. Вы узнали о методе бинаризации изображений, который позволяет установить прямоугольную область с номером на фотографии. Также, представлены различные модели и алгоритмы машинного обучения, которые могут быть использованы для распознавания символов на номерных знаках.
Однако, существуют и другие подходы к распознаванию номеров автомобилей, которые могут быть полезны в практической реализации. В данной статье мы рассмотрим несколько таких подходов.
- Метод multihead-модели — это подход, в котором каждая цифра номера распознается отдельной моделью. Такой метод позволяет улучшить точность распознавания, особенно для русских автомобильных номеров, так как русский алфавит содержит буквы, которые похожи на цифры.
- Кроме того, можно использовать натренированные модели для распознавания русских символов. Например, можно использовать модель, обученную на наборе изображений с символами кириллического алфавита. Это позволит достигнуть более высокого качества распознавания.
- Для улучшения точности распознавания можно также использовать различные методы обработки изображений. Например, можно применить метод гребней или кодом границы для выделения символов номера автомобиля на изображении.
Весь процесс разработки системы распознавания номеров автомобилей может быть реализован с использованием различных инструментов и фреймворков. Например, популярный фреймворк Catalyst предоставляет богатый набор функций для решения задач компьютерного зрения, включая обработку изображений и обучение моделей.
Таким образом, распознавание номеров автомобилей — это задача, которую можно решить с помощью различных подходов и методов. Используя комбинацию этих подходов, можно добиться высокой точности распознавания и улучшить качество системы.
Видео:
Раздел 8 Тема 3 Распознавание автомобильных номеров
Раздел 8 Тема 3 Распознавание автомобильных номеров by Василий Перевощиков 235 views 3 years ago 17 minutes