Вы можете получить исходный код, посетив наш проект на следующих сайтах:
Если вы знакомы с системой контроля версий Git, вы можете использовать следующую команду для клонирования исходного кода с GitHub:
$ git clone https://github.com/liuruoze/EasyPR
Скачайте соответствующую версию OpenCV 3.1.0
с официального сайта OpenCV.
EasyPR поддерживает основные операционные системы, обычно не требуется изменять исходный код для компиляции и запуска. Однако конфигурация среды разработки может различаться в зависимости от платформы. В этом разделе будут рассмотрены методы компиляции для Windows, Linux и macOS.
Для пользователей Windows рекомендуется использовать IDE Visual Studio. Если используется другое средство разработки, пожалуйста, самостоятельно выполните его настройку и делитесь своими решениями.
Окружение | Требования |
---|---|
Операционная система | 64-битная, Windows 7 SP1 / Windows 8 и выше |
Visual Studio | VS2013 / VS2015 |
Python (необязательно) | Python 3.* |
Примечание: Предварительно скомпилированный OpenCV 3.1 больше не поддерживает более ранние версии Visual Studio, поэтому выберите версию VS2013 или выше.
Метод 1****Замечание: Этот метод применим только для версий до v1.5. В версиях 1.6 и выше не рекомендуется использовать этот подход из-за изменения архитектуры. Вы можете присоединиться к группе и узнать способы настройки из сообщества.1. Убедитесь, что директория установки Python добавлена в переменную окружения PATH.
2. Выполните команду python configure.py
, следуя указаниям программы.
3. Откройте решение EasyPR.sln
и просто скомпилируйте и запустите его.
Метод 2
Откройте решение EasyPR.sln
. Это решение загружает два проекта:
EasyPR
, который компилирует исходные файлы в директории src/, создавая статическую библиотеку libeasypr.lib
.Demo
, который компилирует main.cpp в директории test/ и связывает её с libeasypr.lib
, создавая исполняемый файл.Настройка OpenCV
Обычно OpenCV для Windows размещается в директории opencv/build/
, содержащей двоичные файлы, скомпилированные с помощью Visual Studio.
Если автоматически загруженные два проекта решения не соответствуют вашему окружению, выполните настройку каждого из них вручную.
Demo
Настройка | Значение |
---|---|
C/C++ - Дополнительные пути к заголовочным файлам
|
[пути к заголовочным файлам OpenCV];$(SolutionDir)include |
Компоновщик - Дополнительные пути к библиотекам
|
[пути к библиотекам OpenCV] |
Компоновщик - Ввод - Дополнительные зависимости
|
opencv_world310d.lib;%(AdditionalDependencies) |
libeasypr
Конфигурационный параметр | Значение |
---|---|
C/C++ - Дополнительные каталоги включения
|
[каталог include OpenCV];$(SolutionDir)include |
По умолчанию сгенерированный файл demo.exe
будет располагаться в корневом каталоге проекта.
Замечание: При двойном щелчке файла может возникнуть ошибка "не найдена динамическая библиотека opencv". В этом случае есть два решения:
opencv\build\x64\vc(...)\bin
и поместить её в директорию выполнения программы.Ссылка: Настройка OpenCV в Windows можно найти в этой статье.
EasyPR использует CMake для компиляции на Linux и Mac OS. Убедитесь, что система установлена с последней версией CMake.
Чтобы избежать влияния старых версий OpenCV, установленных в системе, необходимо изменить путь в файле CMakeLists.txt
:
set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};/usr/local/opt/opencv3")
Этот путь указывает на каталог установки OpenCV3, где должны находиться конфигурационные файлы CMake OpenCV.
Проект предоставляет скрипт для однокликовой компиляции shell, который следует запустить из корневого каталога проекта:
$ ./build.sh
Замечание: Вы можете использовать EasyPR/include и статическую библиотеку, созданную при сборке, чтобы вызывать функции API, предоставленные EasyPR.
Запуск Demo:
$ ./demo # вход в меню интерактивного режима
$ ./demo ? # вывод справки по командной строке
```### Как начать
После входа в интерактивный режим вы попадаете в основное меню, где представлены следующие функции:
| Название | Описание |
| ------------- | ----------- |
| Тест | Тестирование каждого этапа распознавания номерного знака. Чтобы заменить тестовое изображение, замените его в каталоге resources/image. |
| Батч-тест | Выполнение всех изображений в каталоге general_test, вывод метрик, таких как точность, для оценки эффективности EasyPR. |
| Обучение SVM | Обучение модели распознавания номерного знака с помощью SVM. |
| Обучение ANN | Обучение моделей распознавания символов и китайских символов с помощью ANN, создаются ann.xml и ann_chinese.xml. |
| Обучение китайских символов | Новый в версии 1.6, обучение ANN модели для распознавания серых китайских символов, создаётся annCh.xml. |
| Генерация символов | Требуется использование набора данных plates_200k. |
После успешного запуска EasyPR рекомендуется запустить функцию батч-тест. Если все метрики совпадают с теми, что указаны в README, значит EasyPR успешно установлен. Измените `pr.setResultShow(false)` на `pr.setResultShow(true)` в файле accuracy.hpp, чтобы при массовых тестах отображались результаты локализации номерных знаков.
**Примечание:**При массовых тестах есть опция `native_test`. Вы можете поместить свои изображения в папку `resources/image/native_test` для тестирования. Если ваши изображения не имеют `ground_truth`, то метрика точности не будет вычислена. Однако можно активировать отображение результатов локализации номерных знаков.Для оценки метрик локализации номерных знаков требуется создать GroundTruth_windows.xml и GroundTruth_others.xml. Для этого можно использовать файлы с тем же названием из папки general_test как пример. Например, вот один из xml-узлов:
```xml
<taggedRectangle x="170" y="184" width="96" height="27" rotation="-1" locateType="1">синий номерной знак:Москва А88731</taggedRectangle>
Узел <taggedRectangle>
представляет собой номерной знак, атрибуты x
и y
— это координаты центра прямоугольника, окружающего номерной знак. Ширина и высота — это ширина и высота соответственно. Другие атрибуты пока не используются.
Кодировка файла GroundTruth_windows.xml должна быть ANSI, а GroundTruth_others.xml — UTF-8, иначе могут возникнуть проблемы с отображением символов.
Вы можете передать параметры командной строки в demo[.exe]
, чтобы выполнить нужные действия. В настоящее время Demo поддерживает cq пяти подкоманд. Для получения справочной информации по каждой подкоманде используйте параметр -h
.
Распознавание номерных знаков
# Использует предоставленные модели SVM и ANN для распознавания всех номерных знаков на изображении
$ ./demo recognize -p resources/image/plate_recognize.jpg --svm model/svm.xml --ann model/ann.xml
# Либо проще
$ ./demo recognize -p resources/image/plate_recognize.jpg
Обучение SVM
Новая версия EasyPR значительно упростила обучение SVM:
Для оценки метрик локализации номерных знаков требуется создать GroundTruth_windows.xml и GroundTruth_others.xml. Для этого можно использовать файлы с тем же названием из папки general_test как пример. Например, вот один из xml-узлов:
<taggedRectangle x="170" y="184" width="96" height="27" rotation="-1" locateType="1">синий номерной знак:Москва А88731</taggedRectangle>
Узел <taggedRectangle>
представляет собой номерной знак, атрибуты x
и y
— это координаты центра прямоугольника, окружающего номерной знак. Ширина и высота — это ширина и высота соответственно. Другие атрибуты пока не используются.
Кодировка файла GroundTruth_windows.xml должна быть ANSI, а GroundTruth_others.xml — UTF-8, иначе могут возникнуть проблемы с отображением символов.
Вы можете передать параметры командной строки в demo[.exe]
, чтобы выполнить нужные действия. В настоящее время Demo поддерживает пять подкоманд. Для получения справочной информации по каждой подкоманде используйте параметр -h
.
Распознавание номерных знаков
# Использует предоставленные модели SVM и ANN для распознавания всех номерных знаков на изображении
$ ./demo recognize -p resources/image/plate_recognize.jpg --svm model/svm.xml --ann model/ann.xml
# Либо проще
$ ./demo recognize -p resources/image/plate_recognize.jpg
Обучение SVM
Новая версия EasyPR значительно упростила обучение SVM: # Сначала подготовьте коллекцию изображений номерных знаков plates/ # Номерные знаки помещаются в plates/has/, а не номерные знаки — в plates/no/. # Изображения номерных знаков можно получить из проекта resources/train/svm.7z.
$ ./demo svm --plates=path/to/your/plates --svm=save/to/svm.xml
# Этот командный вызов использует 70 процентов изображений для обучения и 30 процентов для проверки,
# что можно изменить в include/easypr/config.h.
# Обученная модель будет сохранена в save/to/svm.xml.Сначала в корневой директории easypr создаётся временная папка tmp, затем файлы svm из svm.7z распаковываются в эту папку. Выполнение команды `$ demo svm --plates=tmp/svm --svm=tmp/svm.xml` создаст в папке tmp файл svm.xml, который будет являться обученной моделью.
Замена файла model/svm.xml позволит использовать новую модель; перед заменой файла рекомендуется сделать его резервную копию.
Обучение нейронной сети (ANN)
Сначала подготовьте набор изображений символов, который можно получить путём распаковки архива project/resources/train/ann.7z.
Каждый тип символов хранится в отдельной подпапке с соответствующим названием; правила названий можно найти в файле resources/text/province_mapping
.
При завершении всех подготовительных действий выполните следующую команду:
$ ./demo ann --chars=path/to/chars --ann=save/to/ann.xml
Первоначально была создана временная папка tmp в корневой директории easypr, затем был перемещён распакованный каталог ann из ann.7z в папку tmp.
Выполнение команды $ demo ann --chars=tmp/ann --ann=tmp/ann.xml
создаст в папке tmp файл ann.xml, который будет являться обученной моделью.
Замена файла model/ann.xml позволит использовать новую модель; перед заменой файла рекомендуется сделать его резервную копию.
Примечание
В папке train находятся три архива ANN, вот их описание:| Файл | Цель | |----------------|------------------| | ann.7z | Включает черно-белые символы и китайские данные; модели ann и ann_chinese.xml были получены из этого архива. | | annCh.7z | Включает только китайские градационные данные; модель annCh.xml была получена из этого архива. | | annGray.7z | Включает градационные данные символов; пока что никакие модели не были получены из этого архива, используется преимущественно для будущего обучения CNN. |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )