java - 将 nonfree 包含到 opencv4android

标签 java android c++ opencv

我正在尝试将非自由函数添加到我的 android 应用程序中,以便使用 SurfFeatureDetector 和 SurfDescritorExtractor。

为此我关注了this教程,但我首先遇到以下错误 /libnonfree/jni/precomp.hpp:46:30: fatal error: opencv2/cvconfig.h: No such file or directory 可以通过注释 include 来解决行。

但现在我遇到了这个错误/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)

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

最佳答案

我解决了这个问题如下:

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

//#include "cvconfig.h"

//#ifdef HAVE_OPENCV_OCL

....

//#endif

  • 在 nonfree_init.cpp 中,删除行:

//#ifdef HAVE_OPENCV_OCL

...

//#endif

最后,您可以在不复制 ocl 私有(private)文件夹的情况下构建非自由模块。

干杯

关于java - 将 nonfree 包含到 opencv4android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30425743/

相关文章:

java - JBoss 未在 Eclipse Luna (Ubuntu 14) 上运行

java - 有人可以解释一下这个链表空指针异常吗?

android - Android中缩放图片导致OutOfMemory异常

java - fragment 未显示在 Android 导航组件中

c++ - 两个代码段之间执行时间的奇怪差异

java - GWT 中的圆 Angular 面板

java - Android 应用程序中套接字 DataInputStream BufferedInputStream 的消息顺序错误

android - BluetoothServerSocket.accept() 即使设备已配对也不会返回

c++ - Qt : Display a picture during application loading

c++ - 使用 C++17 检测类成员是否存在