我试图在Android上使用非自由模块和OpenCV。我正在按照这个回答https://stackoverflow.com/a/28557686/6126070但我无法理解它,因为这是我第一次使用Android和NDK的应用程序。
现在,OpenCV(没有nonfree)正在处理我的应用程序,并且我在使用NDK和JNI的C ++代码中使用它。我遇到的问题是编辑我当前的Android.mk和Application.mk文件,以便在编译nonfree时回答问题。
这是我的Android.mk和Application.mk文件,其中包含我的项目结构。
Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#opencv
OPENCVROOT:= C:\OpenCV-2.4.10-android-sdk
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
include ${OPENCVROOT}/sdk/native/jni/OpenCV.mk
LOCAL_SRC_FILES := com_example_adrien_ndkopencvtest4_OpencvNativeClass.cpp
LOCAL_LDLIBS += -llog
LOCAL_MODULE := MyOpencvLibs
include $(BUILD_SHARED_LIBRARY)
Application.mk:
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android-16
我的项目因我的jni .h文件中的行#include <opencv2/nonfree/nonfree.hpp>
而崩溃,这就是我尝试导入非自由模块的原因。
正如我所说,我试图实现上面提到的答案,但我遇到了麻烦。
答案:
构建非自由模块:
第1步:我正好复制文件。
第2步:我不知道我应该在我的应用程序或计算机中创建此文件夹的位置?
第3步:这是一个大问题,我不知道如何将我在答案中提供的Android.mk和Application.mk文件合并。此外,我不理解项目文件夹cd
中的行&#34; libnonfree
并输入ndk-build
来构建libnonfree.so.
&#34;
对于&#34;构建示例应用程序&#34;我还没到过这个部分,但我想我不需要这样做我可以继续使用我的应用程序使用OpenCV,除了#include <opencv2/nonfree/nonfree.hpp>
行可以工作。
我试图明确这个问题,如果您需要更多信息,我会很乐意编辑它。
答案 0 :(得分:1)
步骤2:在jniLibs文件下创建文件夹或直接放入4个文件。
第3步:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#opencv
OPENCVROOT:= C:\OpenCV-2.4.10-android-sdk
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
include ${OPENCVROOT}/sdk/native/jni/OpenCV.mk
LOCAL_SRC_FILES := com_example_adrien_ndkopencvtest4_OpencvNativeClass.cpp
LOCAL_LDLIBS += -llog
LOCAL_MODULE := MyOpencvLibs
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES:= ${OPENCVROOT}/sdk/native/jni/include
LOCAL_MODULE := nonfree
LOCAL_CFLAGS := -Werror -O3 -ffast-math
LOCAL_LDLIBS += -llog
# for 2.4.8, delete the line precomp.cpp \
LOCAL_SRC_FILES := nonfree_init.cpp \
sift.cpp \
surf.cpp
include $(BUILD_SHARED_LIBRARY)
你可以搜索如何在android studio(ndk-build)中添加外部工具