簡體   English   中英

使用NDK編譯OpenALPR for Android

[英]Compile OpenALPR for Android with NDK

有沒有辦法使用NDK(ndk-build)為Android編譯OpenALPR庫( https://github.com/openalpr/openalpr )?

這是為android編譯庫的指南:

用於為Android設備編譯OpenALPR的教程

[第0步]

  • 下載並部署android-ndk
  • 將android-ndk根文件夾的符號鏈接添加到/ opt

[第1步]

[第2步]

[第3步]

  • 下載並安裝Android CMake項目( https://code.google.com/p/android-cmake/ )您最終應該使用工具鏈來生成Android項目。 如果你必須選擇使用哪個編譯器,我推薦使用gcc4.6,因為我沒有使用指向gcc4.8編譯器的工具鏈來編譯OpenALPR ...

  • 在/ opt中創建一個指向android-toolchain文件夾的符號鏈接(即:sudo ln -s PATH_TO_ANDROID_TOOLCHAIN / opt / android-toolchain)。 (Android-toolchain文件夾是在部署Android CMake項目期間生成的!)

[第四步]

  • 從github下載openalpr-master( https://github.com/openalpr/openalpr
  • 在openalpr-master目錄中創建一個“build”文件夾
  • 轉到src目錄並編輯CMakeLists.txt文件:

    • 替換此行:SET(OpenCV_DIR“$ {CMAKE_SOURCE_DIR} /../ libraries / opencv /”)
    • with:SET(OpenCV_DIR“path_to_OpenCV4Android / sdk / native / jni”)

    然后注釋該部分以生成alprd(或只是刪除它):

    在基於Unix的操作系統上編譯alprd庫

    IF(不是WIN32)ADD_EXECUTABLE(alprd daemon.cpp videobuffer.cpp守護進程/ beanstalk.c守護進程/ beanstalk.cc守護進程/ uuid.cpp)

    TARGET_LINK_LIBRARIES(alprd openalpr支持uuid curl log4cplus $ {OpenCV_LIBS} $ {Tesseract_LIBS})ENDIF()

  • 打開CMake

  • 將源代碼指向openalpr-master / src目錄
  • 將Build路徑指向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(您應該先創建此目錄)
  • 在openalpr-master的根路徑中創建這些目錄“libraries / tesseract-ocr / api / .libs”(mkdir -p libraries / tesseract-ocr / api / .libs)
  • 將path_to_tess-two / tess-two / libs / armeabi-v7a / libtess.so復制並粘貼到openalpr-master / libraries / tesseract-ocr / api / .libs / libtesseract.so(請務必將其從libtess.so重命名為libtesseract.so!)
  • 打開終端並轉到build文件夾(openalpr-master / build)
  • 做吧”

一切都應該順利編譯。 您可以在openalpr-master / src / libs / armeabi-v7a中找到alpr庫

這就是全部,讓我知道你的成功和失敗,我會盡力幫助你

如果您仍在尋求實現它,請按照以下步驟在Android設備上使用OpenAlpr:

我在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)

這是Application.mk

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

在Android.mk文件中,NativeAlpr.cpp文件包含使用OpenALPR庫所需的本機代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM