如何使用opencv for android,它是从带有额外模块的trunk构建的

时间:2015-06-05 17:09:23

标签: android opencv android-ndk

感谢大量的教程从trunk构建openCV,(具体而言)我跟着this thread,修改了android.mk,如下所示,并成功构建了几乎所有额外模块的OpenCV for Android。

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
include OpenCV.mk

LOCAL_MODULE    := opencv_java

MY_PREFIX := $(LOCAL_PATH)
MY_SOURCES := $(wildcard $(MY_PREFIX)/*.cpp)
LOCAL_SRC_FILES := $(MY_SOURCES:$(MY_PREFIX)%=%)

LOCAL_LDLIBS +=  -llog -ldl -ljnigraphics

include $(BUILD_SHARED_LIBRARY)

然后按照official tutorial,我的cmake命令:

cd opencv\platfroms\
mkdir build_android_arm
cd build_android_arm
cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=..\android\android.toolchain.cmake -DOPENCV_EXTRA_MODULES_PATH=\path\to\opencv_contrib-master\modules -DWITH_CUDA=OFF  ..\..
make

现在,我了解如何将OpenCV库作为Android项目包含在内,并将项目示例放入eclipse中以使用一些现有的OpenCV工具。但是我不清楚,我怎样才能轻松使用额外的模块。该库似乎没有包含额外的模块。一些教程说从头开始使用NDK构建,但这不会使用现有的链接OpenCV库。我想知道是否有更智能的方法将额外的模块集成到当前设置中。感谢~~

1 个答案:

答案 0 :(得分:0)

您不需要将其包含为Android项目;通常,您将在项目中将其用作预构建的库。

如果您希望直接从Java访问附加模块,则需要编写自己的JNI粘合层:不要指望 libopencv_java.so 神奇地包含用于您的额外模块的API添加到它。