Скомпилируйте OpenALPR для Android с помощью NDK

Есть ли способ скомпилировать библиотеку OpenALPR ( https://github.com/openalpr/openalpr) для Android с помощью NDK (ndk-build)?

4 ответа

Решение

Это руководство по компиляции библиотеки для Android:

Учебник по компиляции OpenALPR для устройств Android

[Шаг 0]

  • Скачать и развернуть Android-ndk
  • Сделать символическую ссылку на корневую папку android-ndk в / opt

[Шаг 1]

  • Загрузите и установите OpenCV для Android ( http://opencv.org/platforms/android.html) (просто следуйте инструкциям, предоставленным командой OpenCV)

[Шаг 2]

  • Создайте библиотеку tess-two ( https://github.com/rmtheis/tess-two) (то же самое, что и OpenCV4Android, следуйте шагу сборки на странице GitHub)

[Шаг 3]

  • Загрузите и установите проект Android CMake ( https://code.google.com/p/android-cmake/). Вы должны получить набор инструментов для создания проектов Android. Если вам нужно выбрать, какой компилятор использовать, я рекомендую gcc4.6, так как я не достиг компиляции OpenALPR с помощью цепочки инструментов, указывающей на компилятор gcc4.8...

  • Создайте символическую ссылку на папку android-toolchain внутри /opt (т.е. sudo ln -s PATH_TO_ANDROID_TOOLCHAIN ​​/opt/android-toolchain). (Папка android-toolchain создается во время развертывания проекта Android CMake!)

[Шаг 4]

  • Загрузите openalpr-master с github ( https://github.com/openalpr/openalpr)
  • Создайте папку "build" внутри директории openalpr-master
  • Перейдите в каталог src и отредактируйте файл CMakeLists.txt:

    • Замените эту строку: SET(OpenCV_DIR "${CMAKE_SOURCE_DIR}/../library /opencv/")
    • с помощью: SET(OpenCV_DIR "path_to_OpenCV4Android/sdk/native/jni")

    Затем прокомментируйте раздел для генерации alprd (или просто удалите его):

    Скомпилируйте библиотеку alprd в ОС на основе Unix

    ЕСЛИ (НЕ WIN32) ADD_EXECUTABLE (alprd daemon.cpp videobuffer.cpp daemon / beanstalk.c daemon / beanstalk.cc daemon / uuid.cpp)

    TARGET_LINK_LIBRARIES (alprd openalpr поддерживает uuid curl log4cplus ${OpenCV_LIBS} ${Tesseract_LIBS}) ENDIF()

  • Открыть CMake

  • Укажите Исходный код в каталог openalpr-master / src
  • Укажите путь сборки к каталогу openalpr-master / build
  • Нажмите кнопку "Настроить"
  • Выберите "Unix Makefiles" (по умолчанию) и выберите "Указать набор инструментов для кросс-компиляции", затем нажмите "Далее"
  • Укажите файл цепочки инструментов, который нужно использовать: если вы выполнили шаг 3, он должен находиться в каталоге $ANDROID_CMAKE/toolchain/android.toolchain.cmake (обязательно замените $ ANDROID_CMAKE соответствующим абсолютным путем)
  • Нажмите на готово

Там не должно быть никаких ошибок, но некоторые предупреждения... все в порядке

  • Нажмите Generate

[Шаг 5]

  • Перейдите в каталог сборки и отредактируйте этот файл: misc_utilities/CMakeFiles/benchmark.dir/link.txt: удалите опцию -lpthread (такая строка должна быть только одна). Сохранить и выйти.
  • Откройте проводник и перейдите по пути path_to_tess-two/tess-two/jni/com_googlecode_tesseract_android/src
  • Теперь ищите каждый заголовочный файл (нажмите кнопку поиска и введите ".h")
  • Скопируйте и вставьте каждый заголовочный файл в openalpr-master/src/openalpr/tesseract (вы должны сначала создать этот каталог)
  • Создает эти каталоги "library /tesseract-ocr/api/.libs" в корневом каталоге openalpr-master (библиотеки mkdir -p /tesseract-ocr/api/.libs)
  • Скопируйте и вставьте path_to_tess-two/tess-two/libs/armeabi-v7a/libtess.so в openalpr-master / library /tesseract-ocr/api/.libs/libtesseract.so (не забудьте переименовать его из libtess.so в libtesseract.so!)
  • Откройте терминал и перейдите в папку сборки (openalpr-master/build)
  • Сделать "сделать"

Все должно скомпилироваться гладко. Вы можете найти библиотеку alpr в openalpr-master/src/libs/armeabi-v7a

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

Если вы все еще хотите добиться этого, вот шаги, которые я выполнил, чтобы использовать OpenAlpr на устройстве Android:

  • Сначала загрузите и установите OpenCV для Android ( http://opencv.org/platforms/android.html)
  • Создайте библиотеку tess-two ( https://github.com/rmtheis/tess-two)
  • Загрузите и установите проект Android CMake ( https://code.google.com/p/android-cmake/).
  • Затем с помощью CMake вы сможете скомпилировать библиотеку OpenAlpr (в этом процессе происходит множество хитростей, чтобы зарегистрировать пути к библиотеке tesseract, opencv и т. Д.)

Я попробовал это на Windows 8.1 и Ubuntu 13.10/14.04, оба работают отлично

Итак, это основные шаги для создания библиотеки, вам также нужно написать файл Android.mk для использования библиотеки.

Если вы заинтересованы (или кто-то еще), дайте мне знать, и я напишу правильный пошаговый учебник

Да, это должно быть возможно. Сначала вам нужно будет установить Android-версию OpenCV и Tesseract. Но как только это будет сделано, OpenALPR должен скомпилироваться под Android.

Я подозреваю, что на мобильном телефоне производительность будет невелика. Распознавание номерных знаков - это сложный вычислительный процесс.

Вот контент Android.mk, который я использую:

LOCAL_PATH := $(call my-dir)
LIB_PATH := $(LOCAL_PATH)/../libs/armeabi-v7a

include $(CLEAR_VARS)

LOCAL_MODULE := leptonica
LOCAL_SRC_FILES := liblept.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := tesseract
LOCAL_SRC_FILES := libtess.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := simpleini
LOCAL_SRC_FILES := libsimpleini.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := support
LOCAL_SRC_FILES := libsupport.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := openalpr
LOCAL_SRC_FILES := libopenalpr-static.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

OPENCV_INSTALL_MODULES:=on
OPENCV_CAMERA_MODULES:=off

include path_to_opencv4android/OpenCV.mk

LOCAL_MODULE := nativealpr
LOCAL_SRC_FILES := NativeAlpr.cpp
LOCAL_SHARED_LIBRARIES += tesseract leptonica
LOCAL_STATIC_LIBRARIES += openalpr support simpleini

include $(BUILD_SHARED_LIBRARY)

Вот приложение.mk

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a

В файле Android.mk файл NativeAlpr.cpp содержит необходимый собственный код для использования библиотеки OpenALPR.

Другие вопросы по тегам