2014-01-23 78 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库