【发布时间】:2014-02-14 02:02:07
【问题描述】:
有没有办法使用 NDK (ndk-build) 为 Android 编译 OpenALPR (https://github.com/openalpr/openalpr) 库?
【问题讨论】:
标签: android android-ndk java-native-interface anpr
有没有办法使用 NDK (ndk-build) 为 Android 编译 OpenALPR (https://github.com/openalpr/openalpr) 库?
【问题讨论】:
标签: android android-ndk java-native-interface anpr
这是为 android 编译库的指南:
为 Android 设备编译 OpenALPR 的教程
[步骤 0]
[步骤 1]
[步骤 2]
[步骤 3]
下载并安装 Android CMake 项目 (https://code.google.com/p/android-cmake/) 您应该最终得到一个用于生成 android 项目的工具链。 如果你必须选择使用哪个编译器,我推荐使用 gcc4.6,因为我没有使用指向 gcc4.8 编译器的工具链来编译 OpenALPR...
在 /opt 中创建一个指向 android-toolchain 文件夹的符号链接(即:sudo ln -s PATH_TO_ANDROID_TOOLCHAIN /opt/android-toolchain)。 (android-toolchain文件夹是在Android CMake项目部署过程中生成的!)
[步骤 4]
进入 src 目录并编辑 CMakeLists.txt 文件:
然后评论生成 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 卷曲 log4cplus ${OpenCV_LIBS} ${Tesseract_LIBS} ) ENDIF()
打开 CMake
应该没有任何错误,但有一些警告......没关系
[步骤 5]
一切都应该顺利编译。 您可以在 openalpr-master/src/libs/armeabi-v7a 中找到 alpr 库
就是这样,让我知道你的成功和失败,我会尽力帮助你
【讨论】:
如果您仍然想实现它,以下是我在 Android 设备上使用 OpenAlpr 所遵循的步骤:
我在 Windows 8.1 和 Ubuntu 13.10/14.04 上试过,都可以正常工作
这些是构建库的主要步骤,您还需要编写一个 Android.mk 文件来使用该库。
如果你有兴趣(或其他人)让我知道,我会写一个正确的分步教程
【讨论】:
是的,应该可以。您需要首先获得 Android 版本的 OpenCV 和 Tesseract 设置。但是一旦完成,OpenALPR 应该可以在 Android 下干净地编译。
不过,我怀疑在手机上的性能不会很好。车牌识别是一个计算密集型过程。
【讨论】:
这是我使用的 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 库所需的本机代码
【讨论】: