我已将openCVLibrary添加到我的项目中,并成功使用其他openCV功能.
>是否有具体使用libopencv_features2d的原因?
>编译和链接features2d的正确方法是什么?
我的应用build.gradle:
apply plugin: 'com.android.application' // android { compileSdkVersion 27 buildToolsversion '27.0.3' // defaultConfig { minSdkVersion 21 targetSdkVersion 27 ... externalNativeBuild { cmake { arguments "-DANDROID_ARM_NEON=TRUE","-DANDROID_TOOLCHAIN=clang","-DANDROID_STL=c++_static","-DCMAKE_BUILD_TYPE=Release","-DANDROID_CPP_FEATURES=rtti exceptions" cppFlags "-D__STDC_FORMAT_MACROS",'-O3','-fopenmp','-fsigned-char',"-std=c++14","-frtti","-fexceptions","-mfloat-abi=softfp","-Wall" } ndk { abiFilters 'arm64-v8a' } } } // externalNativeBuild { cmake { path "CMakeLists.txt" } } ... } // dependencies { compile filetree(include: ['*.jar'],dir: 'libs') implementation project(':openCVLibrary340') //Module }
我的CMakeList.txt:
cmake_minimum_required(VERSION 3.4.1) # include_directories(/.../OpenCV-android-sdk/sdk/native/jni/include) add_library( libopencv SHARED IMPORTED ) set_target_properties(libopencv PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so) # FILE(GLOB CPP_SRC "src/main/cpp/*.c" "src/main/cpp/*.h" "src/main/cpp/*.cpp" "src/main/cpp/*.hpp" ) # add_library( myLib SHARED ${CPP_SRC} ) # find_library( log-lib log ) # target_link_libraries( myLib libopencv ${log-lib} ) target_link_libraries( myLib android log EGL GLESv2 )
在我的jniLibs中 – > arm64-v8a我有那些cv libs:
libopencv_calib3d.a,libopencv_core.a,libopencv_dnn.a,
libopencv_features2d.a libopencv_flann.a,libopencv_highgui.a,
libopencv_imgcodecs.a,libopencv_imgproc.a,libopencv_java3.so,
libopencv_ml.a,libopencv_objdetect.a,libopencv_photo.a,
libopencv_shape.a libopencv_stitching.a,libopencv_superres.a,
libopencv_video.a,libopencv_videoio.a,libopencv_videostab.a
正如我所说的其他cv函数,如cv :: solvePnP工作正常.
只有KnnMatch扔未定型.
更新:如果我删除-DANDROID_STL = c _shared我可以编译knnMatch但我需要它,任何建议?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。