Вы можете получить исходный код, посетив нашу страницу проекта:
Если вы знакомы с системой контроля версий Git, вы можете использовать следующую команду для клонирования исходного кода с GitHub:
$ git clone https://github.com/liuruoze/EasyPR
Скачайте соответствующую версию OpenCV3.1.0
с официального сайта OpenCV.
EasyPR поддерживает текущие основные операционные системы, обычно не требуя изменения исходного кода для компиляции и запуска. Тем не менее, настройка среды разработки (IDE) на разных платформах может отличаться. В основном будут рассмотрены методы компиляции для Windows, Linux и Mac OS.
Для пользователей Windows рекомендуется использовать IDE Visual Studio. Если вы используете другую IDE, пожалуйста, настройте её самостоятельно или поделитесь вашим решением.
Окружение | Требования |
---|---|
Операционная система | 64-битная, Windows 7 SP1 / Windows 8 и выше |
Visual Studio | vs2013 / vs2015 |
Python (необязательно) | Python 3.* |
Примечание: Предварительно скомпилированный OpenCV3.1 не поддерживает более ранние версии Visual Studio, поэтому рекомендуется использовать версию vs2013 и выше.
Метод 1****Примечание: Метод с использованием Python применим только для версий ниже 1.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\
.
Если загруженные проекты не соответствуют вашему окружению, настройте их вручную:
demo
Настройка | Значение |
---|---|
C/C++ -Дополнительные пути для включения
|
[путь к include OpenCV];$(SolutionDir)include |
Компоновщик -Дополнительные пути для библиотек
|
[путь к lib OpenCV] |
Компоновщик -Входные данные -Дополнительные зависимости
|
opencv_world310d.lib;%(AdditionalDependencies) |
Замечание: Для версии Debug используется библиотека opencv_world310d.lib, а для версии Release — opencv_world310.lib.
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.
Проект предоставляет скрипт для однокликовой компиляции, который можно запустить в корневом каталоге проекта:
$ ./build.sh
и это все.
Замечание: Вы можете использовать EasyPR/include и статическую библиотеку, сгенерированную после компиляции, для вызова функций API, предоставляемых EasyPR.
Запуск Demo:
$ ./demo // Войти в интерактивное меню
$ ./demo ? // Просмотреть помощь по CLI
После входа в интерактивное меню, вы попадаете в основное меню, где представлены следующие функции:| Название | Описание |-------------|----------- | Тест | Тестирование каждого этапа распознавания номерного знака. Чтобы изменить изображение для тестирования, замените изображение в каталоге 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-узел:
<taggedRectangle x="170" y="184" width="96" height="27" rotation="-1" locateType="1">синий номер:京A88731</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:
<taggedRectangle x="170" y="184" width="96" height="27" rotation="-1" locateType="1">синий номер:京A88731</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 файл в эту папку. Выполнение команды `$ demo svm --plates=tmp/svm --svm=tmp/svm.xml` приводит к созданию файла `svm.xml` в папке `tmp`, который является обученной моделью.
Замена файла model/svm.xml
позволяет использовать новую модель. Перед заменой рекомендуется сделать резервную копию исходной модели.
Обучение нейронной сети (ANN)
Сначала подготовьте набор изображений символов. Вы можете извлечь его из архива ann.7z
в папке project/resources/train/
.
Каждый тип символов хранится в отдельной подпапке, названной по имени символа. Правила названий можно найти в файле resources/text/province_mapping
.
После подготовки всех необходимых данных, выполните следующую команду:
$ ./demo ann --chars=path/to/chars --ann=save/to/ann.xml
Сначала в корневой папке проекта easypr
создается папка tmp
, а архив ann.7z
распаковывается в нее.
Выполнение команды $ demo ann --chars=tmp/ann --ann=tmp/ann.xml
приводит к созданию файла ann.xml
в папке tmp
, который является обученной моделью.
Замена файла model/ann.xml
позволяет использовать новую модель. Перед заменой рекомендуется сделать резервную копию исходной модели.
Внимание
В папке train
находятся три архива ANN:| Файл | Цель |
|-------------|-----------|
| ann.7z | Содержит черно-белые изображения символов и китайские данные, модели ann
и ann_chinese.xml
были обучены на основе этого архива;
| annCh.7z | Содержит только китайские данные в оттенках серого, модель annCh.xml
была обучена на основе этого архива;
| annGray.7z | Содержит данные символов в оттенках серого, на данный момент модель, обученная на основе этого архива, не используется, но предназначена для будущего обучения с использованием CNN.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )