我试图将nonfree函数添加到我的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\private
和C:\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)
有人可以向我解释我在做什么错吗?
谢谢
最佳答案
我解决了这个问题,如下所示:
//#include“cvconfig.h”
和
//#ifdef HAVE_OPENCV_OCL
....
//#万一
nonfree_init.cpp中的
//#ifdef HAVE_OPENCV_OCL
...
//#万一
最后,您可以构建非自由模块,而无需复制ocl专用文件夹。
干杯