有没有办法使用 NDK (ndk-build) 为 Android 编译库 OpenALPR ( https://github.com/openalpr/openalpr)?
最佳答案
这是为 android 编译库的指南:
为 Android 设备编译 OpenALPR 的教程
[第0步]
- 下载并部署android-ndk
- 将 android-ndk 根文件夹的符号链接(symbolic link)到/opt
[第一步]
- 下载并安装 OpenCV for Android ( http://opencv.org/platforms/android.html ) (只需按照 OpenCV 团队提供的教程进行操作即可)
[第二步]
- 构建 tess-two 库 ( https://github.com/rmtheis/tess-two ) (与 OpenCV4Android 相同,按照 GitHub 页面上的构建步骤)
[第三步]
下载并安装 Android CMake 项目 ( https://code.google.com/p/android-cmake/ ) 您应该最终得到一个用于生成 android 项目的工具链。 如果您必须选择要使用的编译器,我推荐 gcc4.6,因为我没有使用指向 gcc4.8 编译器的工具链编译 OpenALPR...
在/opt 中创建一个指向 android-toolchain 文件夹的符号链接(symbolic link)(即:sudo ln -s PATH_TO_ANDROID_TOOLCHAIN/opt/android-toolchain)。 (android-toolchain文件夹是在部署Android CMake项目时生成的!)
[第四步]
- 从 github ( https://github.com/openalpr/openalpr ) 下载 openalpr-master
- 在 openalpr-master 目录中创建文件夹“build”
转到 src 目录并编辑 CMakeLists.txt 文件:
- 替换这一行: SET(OpenCV_DIR "${CMAKE_SOURCE_DIR}/../libraries/opencv/")
- 与: SET(OpenCV_DIR "path_to_OpenCV4Android/sdk/native/jni")
然后注释生成 alprd 的部分(或者只是删除它):
在基于 Unix 的操作系统上编译 alprd 库
如果(不是 WIN32) ADD_EXECUTABLE( alprd daemon.cpp videobuffer.cpp daemon/beanstalk.c daemon/beanstalk.cc daemon/uuid.cpp )
TARGET_LINK_LIBRARIES(alprd openalpr 支持 uuid curl log4cplus ${OpenCV_LIBS} ${Tesseract_LIBS} ) ENDIF()
打开CMake
- 将源代码指向 openalpr-master/src 目录
- 将构建路径指向 openalpr-master/build 目录
- 按“配置”按钮
- 选择“Unix Makefiles”(默认)并选择“为交叉编译指定工具链”,然后单击“下一步”
- 指定要使用的工具链文件:如果您实现了第 3 步,它应该位于 $ANDROID_CMAKE/toolchain/android.toolchain.cmake 下(请务必将 $ANDROID_CMAKE 替换为其相应的绝对路径)
- 点击完成
不应该有任何错误,但有一些警告......没关系
- 按生成
[第五步]
- 转到构建目录并编辑此文件: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 !)
- 打开终端并转到构建文件夹 (openalpr-master/build)
- 做“做”
一切都应该顺利编译。 您可以在 openalpr-master/src/libs/armeabi-v7a 中找到 alpr 库
就是这样,让我知道你的成功和失败,我会尽力帮助你
关于android - 使用 NDK 为 Android 编译 OpenALPR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21309592/