有没有办法使用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