包括nonfree到opencv4android

时间:2015-05-24 16:28:38

标签: java android c++ opencv

我试图将非自由功能添加到我的Android应用程序中,以便使用SurfFeatureDetector和SurfDescritorExtractor。

为此我遵循this教程,但我首先遇到以下错误/libnonfree/jni/precomp.hpp:46:30: fatal error: opencv2/cvconfig.h: No such file or directory,可以通过评论包含行来解决。

但是现在我发现了这个错误/libnonfree/jni/precomp.hpp:66:42: fatal error: opencv2/ocl/private/util.hpp: No such file or directory

所以我将C:\opencv\sources\modules\ocl\include\opencv2\ocl\privateC:\opencv\sources\modules\ocl\include\opencv2\ocl\cl_runtime文件夹复制到C:\OpenCV-android-sdk\sdk\native\jni\include\opencv2\ocl\

但现在我得到了这些错误:

/include/opencv2/ocl/private/util.hpp:65:8: error: 'cl_device_id' does not name a type
/include/opencv2/ocl/private/util.hpp:70:8: error: 'cl_context' does not name a type
/include/opencv2/ocl/private/util.hpp:75:8: error: 'cl_command_queue' does not name a type
... and so on

我正在使用cygwin构建libnonfree并在adroid studio上使用它是我的Android.mk:

LOCAL_PATH  := $(call my-dir)

include $(CLEAR_VARS)
OPENCV_INSTALL_MODULES := on
OPENCV_CAMERA_MODULES  := off
include C:\OpenCV-android-sdk\sdk\native\jni\OpenCV.mk

LOCAL_C_INCLUDE := C:\OpenCV-android-sdk\sdk\native\jni\include

LOCAL_SRC_FILES := nonfree_init.cpp sift.cpp surf.cpp

LOCAL_MODULE := nonfree
LOCAL_CFLAGS := -Werror -O3 -ffast-math
LOCAL_LDLIBS := -llog -ldl

include $(BUILD_SHARED_LIBRARY)

有人可以解释一下我做错了什么吗? 感谢

1 个答案:

答案 0 :(得分:1)

我解决了这个问题如下:

  • 在precomp.hpp中删除或注释掉这些行

// #include“cvconfig.h”

// #ifdef HAVE_OPENCV_OCL

...

//#ENDIF

  • 在nonfree_init.cpp中,删除行:

// #ifdef HAVE_OPENCV_OCL

...

//#ENDIF

最后,您可以构建非自由模块而无需复制ocl私有文件夹。

干杯