1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/liuruoze-EasyPR

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Usage.md 18 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 11.03.2025 07:33 8ea3932

Использование

Получение исходного кода

Вы можете получить исходный код, посетив наш проект на следующих сайтах:

Если вы знакомы с системой контроля версий Git, вы можете использовать следующую команду для клонирования исходного кода с GitHub:

$ git clone https://github.com/liuruoze/EasyPR

Подготовка

  1. Установите OpenCV

Скачайте соответствующую версию OpenCV 3.1.0 с официального сайта OpenCV.

EasyPR поддерживает основные операционные системы, обычно не требуется изменять исходный код для компиляции и запуска. Однако конфигурация среды разработки может различаться в зависимости от платформы. В этом разделе будут рассмотрены методы компиляции для Windows, Linux и macOS.

Windows

Для пользователей 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". В этом случае есть два решения:

  • Найти недостающую dll в каталоге opencv\build\x64\vc(...)\bin и поместить её в директорию выполнения программы.
  • Добавить указанный каталог bin в системную переменную среды PATH, после чего перезапустите программу.

Ссылка: Настройка OpenCV в Windows можно найти в этой статье.

Linux & Mac OS

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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/liuruoze-EasyPR.git
git@api.gitlife.ru:oschina-mirror/liuruoze-EasyPR.git
oschina-mirror
liuruoze-EasyPR
liuruoze-EasyPR
master