【问题标题】:add opencv in cmakelists.txt android在 cmakelists.txt android 中添加 opencv
【发布时间】:2017-05-01 01:57:12
【问题描述】:

我正在使用本机代码并使用 ndk-build 在 android studio 项目中打开 cv,但我想使用 cmake。请告诉我如何在 cmakelists.txt 文件中设置这些东西。 这是我的 Android.mk 文件

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

OpenCV_INSTALL_MODULES:=on
OPENCV_CAMERA_MODULES:=off
OPENCV_LIB_TYPE:=STATIC

ifeq ("$(wildcard $(OPENCV_MK_PATH))","")
include D:/OpenCV-3.1.0-android-sdk/sdk/native/jni/OpenCV.mk
else
include $(OPENCV_MK_PATH)
endif

LOCAL_MODULE := module_name

LOCAL_CFLAGS := -DANDROID_NDK \
                -DDISABLE_IMPORTGL

LOCAL_SRC_FILES := src/main/cpp/test.cpp

LOCAL_LDLIBS    += -lm -llog -ljnigraphics
include $(BUILD_SHARED_LIBRARY)

如何在cmake中设置这些东西

【问题讨论】:

    标签: opencv android-studio android-ndk cmake ndk-build


    【解决方案1】:

    为时已晚,但有人可能会发现它很有用。 首先将 opencv 2 的 libopencv_java.so 或 oepncv3 的 libopencv_java3.so 放在不同架构下的 app/src/main/jniLibs 文件夹中,如果您也有 linonfree.so 则将其添加到 jniLibs 文件夹中。将 cmake 链接到 gradle。
    这是 CmakeLists。

        cmake_minimum_required(VERSION 3.4.1)
           set(EXECUTABLE_OUTPUT_PATH      "${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}")
        add_library( # Sets the name of the library.
                     native-lib
    
                     # Sets the library as a shared library.
                     SHARED
    
                     # Provides a relative path to your source file(s).
                     src/main/cpp/native-lib.cpp )
     #the nonfree optional if you have build the nonfree.so of the xfeature2d module    
    add_library( # Sets the name of the library 
                 nonfree
                 # Sets the library as shared library.
                 SHARED
                 # indicate the library is prebuilt.
                 IMPORTED )
    set_target_properties( # Specifies the targeted library.
                             nonfree
                           # Specifies the parameter you want to define.
                              PROPERTIES IMPORTED_LOCATION
                            # Specifies the location of the library.
                             ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libnonfree.so )
        include_directories(C:/Users/what/Documents/OpenCV-android-sdk/sdk/native/jni/include)
        add_library( lib-opencv SHARED IMPORTED )
        set_target_properties(lib-opencv PROPERTIES IMPORTED_LOCATION  ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so)
        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
                               # prebuilt library nonfree.
                               nonfree
                               # prebuilt library opencv java.
                               lib-opencv
                               # Links the target library to the log library
                               # included in the NDK.
                               ${log-lib} )
    

    在 build.gradle(app) 中设置 jniLis.srcDirs 文件夹路径。

    sourceSets {
        main {
            // let gradle pack the shared library into apk
            jniLibs.srcDirs = ['src/main/jniLibs']
        }
        }
    

    【讨论】:

      猜你喜欢
      • 2020-03-06
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多