我正在尝试在 Android 上将非自由模块与 OpenCV 结合使用。我正在关注这个答案 https://stackoverflow.com/a/28557686/6126070但我无法理解它,因为这是我第一个使用 Android 和 NDK 的应用程序。
现在,OpenCV(没有 nonfree)正在我的应用程序上工作,我在带有 NDK 和 JNI 的 C++ 代码中使用它。我遇到的问题是将我当前的 Android.mk 和 Application.mk 文件编辑为编译非自由的答案中的那些文件。
这是我的 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)
应用程序.mk:
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android-16
我的项目崩溃并显示 #include <opencv2/nonfree/nonfree.hpp>
行在我的 jni .h 文件中,这就是我尝试导入非自由模块的原因。
正如我所说,我正在尝试实现上面链接的答案,但我遇到了麻烦。
在回答中:
构建非自由模块:
第 1 步:我正在复制文件。
第 2 步:我不明白我应该在哪里创建这个文件夹,是在我的应用程序中还是在我的计算机中?
第 3 步:这是个大问题,我不知道如何将答案中提供的 Android.mk 和 Application.mk 文件与我的合并。此外,我不明白“cd
进入项目文件夹 libnonfree
并键入 ndk-build
以构建 libnonfree.so.
”这一行
对于“构建示例应用程序”,我还没有接触过这部分,但我想我不需要这样做我可以继续将 OpenCV 与我的应用程序一起使用,但 #include <opencv2/nonfree/nonfree.hpp>
除外。线路将工作。
我试着把这个问题说清楚,如果你需要更多信息,我很乐意编辑它。
最佳答案
第二步:在你的jniLibs文件下创建文件夹或者直接放4个文件。
第三步:
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)中添加外部工具
关于java - 在 Android 中使用 OpenCV 非自由模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44212588/