有沒有辦法使用NDK(ndk-build)爲Android編譯庫OpenALPR(https://github.com/openalpr/openalpr)?使用NDK爲Android編譯OpenALPR
回答
這是一個引導到編譯庫的Android:
教程用於編譯OpenALPR Android設備
[步驟0]
- 下載並部署android-ndk
- 製作一個符號鏈接到android-ndk根文件夾到/ opt
[步驟1]
- 下載和Android的安裝OpenCV(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/) 您應該具有生成機器人項目的工具鏈告終。 如果你要選擇使用哪種編譯器,我推薦使用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
這一切,讓我知道你的成功和失敗,我會盡力幫助你儘可能地
嗯,我沒有讀取從OpenALPR的先決條件,您可能不需要評論或刪除關於alprd的CMakeLists.txt ... – jav974
我遇到這個錯誤:[93%]構建CXX對象CMakeFiles/alprd.dir/daemon.cpp.o /Users/ac-1/Dev/openalpr/src/daemon .cpp:6:30:致命錯誤:log4cplus/logger.h:沒有這樣的文件或目錄 ...任何想法,我可以找到這個頭文件? – Phileo99
@ Phileo99我通過手動安裝log4cplus來解決這個問題(http://sourceforge.net/p/log4cplus/wiki/Home/) – jav974
是的,它應該是可能的。您需要首先獲取OpenCV的Android版本和Tesseract設置。但一旦完成,OpenALPR應該在Android下乾淨地編譯。
我懷疑手機的性能不會很好。車牌識別是一個計算密集型過程。
你能指示我一個教程或指導,爲這個lib創建一個正確的Android.mk文件? –
如果你還在尋找實現它,這裏有我跟着,以便使用OpenAlpr Android設備上的步驟:
- 首先下載並安裝OpenCV的Android(http://opencv.org/platforms/android.html)
- 構建苔絲 - 兩個庫(https://github.com/rmtheis/tess-two)
- 下載並安裝Android CMake的項目(https://code.google.com/p/android-cmake/)
- 然後用CMake的你應該能夠編譯OpenAlpr庫(很多技巧的發生在這凝固酶原SS,註冊路徑的Tesseract庫的OpenCV等..)
我試了一下在Windows 8.1和Ubuntu 13.10/14.04,既很好地工作
好這些建設的主要步驟該庫,你還需要編寫一個Android.mk文件來使用該庫。
如果你有興趣(或其他人)讓我知道,我會寫教程一步一個適當的步
嗨,我有興趣在一步一步的教程=) –
@ user1481792看到我的新教程的答案;) – jav974
這裏是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庫
- 1. 使用Android NDK編譯libpcap
- 2. 在android ndk編譯fftw3 ndk
- 3. 交叉編譯爲Android使用NDK失敗,編譯器錯誤
- 4. OSX編譯openalpr上化妝
- 5. Android NDK不編譯
- 6. Android編譯庫NDK
- 7. 用Android NDK編譯PugiXML
- 8. Android NDK使用哪種編譯器?
- 9. 使用Android編譯FFmpeg 3.1.1 for x86 NDK
- 10. 使用Android NDK交叉編譯
- 11. 使用NDK爲Android編譯彙編程序
- 12. 爲Android NDK編譯C庫的問題
- 13. 目標EXE爲Android ABI(NDK編譯)
- 14. 爲Android編譯C++ 11源代碼NDK
- 15. 如何爲android NDK編譯boost_thread?
- 16. 如何爲Android NDK 11編譯Boost 1.61
- 17. 的Android NDK編譯GMP庫
- 18. 在Android NDK中編譯OpenCV
- 19. Android-NDK編譯和鏈接
- 20. 的Android NDK編譯錯誤
- 21. 如何使用crystax-NDK&autotools爲Android交叉編譯gperftools?
- 22. 如何使用NDK爲Android編譯現有的C程序?
- 23. 使用JNI將大型C++庫編譯爲Android NDK -makefile問題
- 24. 使用Android NDK爲armeabi編譯錯誤指令'lock'
- 25. android JNI加載mupdf(用NDK編譯?)
- 26. 用Android NDK編譯Libtorrent Rasterbar任何人?
- 27. 編譯NDK庫
- 28. 如何使用android ndk r9b編譯FFMPEG for Android
- 29. 使用Objective-C啓用的gcc錯誤編譯Android NDK
- 30. 使用Android NDK編譯命令行C應用程序
更新指令在這裏:https://github.com/openalpr/openalpr/wiki/Android-compilation – jav974