2014-01-23 75 views

回答

9

這是一個引導到編譯庫的Android:

教程用於編譯OpenALPR Android設備

[步驟0]

  • 下載並部署android-ndk
  • 製作一個符號鏈接到android-ndk根文件夾到/ opt

[步驟1]

[步驟2]

[步驟3]

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

  • 創建一個符號鏈接到android-toolchain (例如:sudo ln -s PATH_TO_ANDROID_TOOLCHAIN/opt/android-toolchain)。 (機器人的CMake項目的部署過程中生成的機器人工具鏈夾!)

[步驟4]

  • 下載從GitHub的openalpr主(https://github.com/openalpr/openalpr
  • 創建一個文件夾「構建」 openalpr主目錄內
  • 轉到src目錄和編輯的CMakeLists.txt文件:

    • 替換此行: SET(OpenCV_DIR 「$ {} CMAKE_SOURCE_DIR /../庫/ OpenCV的/」)
    • 有: SET(OpenCV_DIR 「path_to_OpenCV4Android/SDK /本地/ JNI」)

    然後註釋產生alprd(或只是將其刪除)的部分:

    編譯在基於Unix的OS

    IF(NOT WIN32) ADD_EXECUTABLE(alprd daemon.cpp videobuffer的alprd庫。CPP守護程序/ beanstalk.c守護程序/ beanstalk.cc守護進程/ uuid.cpp)

    TARGET_LINK_LIBRARIES(alprd openalpr 支撐 UUID 捲曲 log4cplus $ {OpenCV_LIBS} $ {Tesseract_LIBS} ) ENDIF()

  • 打開的CMake

  • 點的源代碼到openalpr主/ src目錄
  • 寶詮釋生成路徑openalpr主/ build目錄
  • 按「配置」按鈕
  • 選擇「Unix的Makefile文件」(默認),選擇「指定工具鏈交叉編譯」,然後單擊「下一步」
  • 指定要使用的工具鏈文件:如果您已完成步驟3,則應該位於$ ANDROID_CMAKE/toolchain/android.toolchain.cmake下(確保將$ ANDROID_CMAKE替換爲其相應的絕對路徑)
  • 點擊完成

不應該有任何錯誤,但一些警告......沒關係

  • 按生成

[步驟5]

  • 轉到build目錄和編輯這個文件:misc_utilities/CMakeFiles/benchmark.dir/link.txt:刪除-lpthread選項(應該只有一行這樣)。保存並退出。
  • 打開一個文件瀏覽器,並轉到path_to_tess個/苔絲個/ JNI/com_googlecode_tesseract_android/src目錄
  • 現在搜索每一個頭文件(按搜索按鈕,然後鍵入「.H」)
  • 複製和粘貼每個頭文件openalpr-master/src/openalpr/tesseract(你應該先創建這個目錄)
  • 在openalpr-master的根路徑(mkdir - 將lib/libs/armeabi-v7a/libtess.so複製並粘貼到openalpr-master/libraries/tesseract-ocr/api/.libs中。 /libtesseract.so(請確保從libtess.so重命名爲libtesseract.so!)
  • 打開一個終端並轉到build文件夾(openalpr主/編譯)
  • 執行 「make」

一切都會順利編譯。 你可以找到在openalpr主的ALPR庫/ src目錄/庫/ armeabi-V7A

這一切,讓我知道你的成功和失敗,我會盡力幫助你儘可能地

+0

嗯,我沒有讀取從OpenALPR的先決條件,您可能不需要評論或刪除關於alprd的CMakeLists.txt ... – jav974

+0

我遇到這個錯誤:[93%]構建CXX對象CMakeFiles/alprd.dir/daemon.cpp.o /Users/ac-1/Dev/openalpr/src/daemon .cpp:6:30:致命錯誤:log4cplus/logger.h:沒有這樣的文件或目錄 ...任何想法,我可以找到這個頭文件? – Phileo99

+0

@ Phileo99我通過手動安裝log4cplus來解決這個問題(http://sourceforge.net/p/log4cplus/wiki/Home/) – jav974

0

是的,它應該是可能的。您需要首先獲取OpenCV的Android版本和Tesseract設置。但一旦完成,OpenALPR應該在Android下乾淨地編譯。

我懷疑手機的性能不會很好。車牌識別是一個計算密集型過程。

+0

你能指示我一個教程或指導,爲這個lib創建一個正確的Android.mk文件? –

3

如果你還在尋找實現它,這裏有我跟着,以便使用OpenAlpr Android設備上的步驟:

我試了一下在Windows 8.1和Ubuntu 13.10/14.04,既很好地工作

好這些建設的主要步驟該庫,你還需要編寫一個Android.mk文件來使用該庫。

如果你有興趣(或其他人)讓我知道,我會寫教程一步一個適當的步

+1

嗨,我有興趣在一步一步的教程=) –

+0

@ user1481792看到我的新教程的答案;) – jav974

0

這裏是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庫