我正在努力
OpenCV
在Android上工作。我学过几门教程,到目前为止还没有成功。一种方法是
OpenCVManager
但是当我尝试这些样品时,它们不起作用。
我现在尝试的方法是
NDK
并通过添加opencv
CMake
和
Android.mk
.到目前为止还没有成功。一般来说,哪种方法是开始使用OpenCV和Android的最佳方法?
我试图创建一个空矩阵
cv::Mat tmp
但是我总是会得到一个链接错误。
../../../../src/main/jniLibs/jni/include/opencv2/core/mat.inl.hpp:704: error: undefined reference to 'cv::fastFree(void*)'
我尝试过添加不同的呼叫,比如
-lopencv_core
等等。我不确定的一件事是如何链接。静态libs包含
libopencv_core.so
等等。然而,
jni/libs/
仅包含
libopencv_java3.so
.确切地说,我应该链接哪些库,以及如何链接?
CMakeLists.txt
cmake_minimum_required(VERSION 3.4.1)
include_directories(src/main/jniLibs/jni/include)
add_library( lib_opencv SHARED IMPORTED )
set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/libs/${ANDROID_ABI}/libopencv_java3.so)
add_library( native-lib SHARED src/main/cpp/native-lib.cpp )
find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log )
target_link_libraries( # Specifies the target library.
native-lib
# Links the target library to the log library
# included in the NDK.
${log-lib} )
安卓.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
OPENCV_LIB_TYPE:=SHARED
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
include {/home/myname/Code/Libraries/Android/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk}
LOCAL_SRC_FILES += $(LOCAL_PATH)/native-lib.cpp
LOCAL_C_INCLUDES += {/home/myname/Code/Libraries/Android/OpenCV-android-sdk/sdk/native/jni/include}
include $(PREBUILT_STATIC_LIBRARY)
LOCAL_LDLIBS += -llog -ldl
LOCAL_CFLAGS += -DOPENCV_OLDER_VISION
LOCAL_CPP_FEATURES += exceptions (Recommended)
LOCAL_CPPFLAGS += -fexceptions
LOCAL_MODULE := native-lib
include $(BUILD_SHARED_LIBRARY)