Ubuntu编译OpenCV Android SDK

75 阅读1分钟

Ubuntu编译OpenCV Android SDK

export ANDROID_HOME==~/android/android-sdk
export ANDROID_SDK=$ANDROID_HOME
export ANDROID_NDK_HOME=~/android/android-ndk-r18b
export ANDROID_NDK=$ANDROID_NDK_HOME

创建build目录,并进入该目录

mkdir build
cd build

在build目录执行以下脚本进行配置

cmake -DINSTALL_ANDROID_EXAMPLES=OFF \
-DANDROID_EXAMPLES_WITH_LIBS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_DOCS=OFF \
-DWITH_OPENCL=OFF \
-DWITH_IPP=OFF \
-DWITH_ITT=OFF \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake \
-DANDROID_STL=c++_static \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_ANDROID_PROJECTS=OFF \
-DBUILD_ANDROID_EXAMPLES=OFF \
-DBUILD_PREF_TESTS=OFF \
-DBUILD_TESTS=OFF \
-DANDROID_ABI=armeabi-v7a \
-DANDROID_SDK_TARGET=21 -DBUILD_SHARED_LIBS=NO -DBUILD_WITH_FFMPEG=NO ..

然后开始编译

make -j8
make install

Android Studio使用

android_getCpuFeatures错误

ld.lld: error: undefined symbol: android_getCpuFeatures
>>> referenced by system.cpp:599 (/home/pujh/ffmpeg/opencv-4.10.0/modules/core/src/system.cpp:599)
>>>               system.cpp.o:(cv::HWFeatures::initialize()) in archive C:/Users/24415/Desktop/Projects/OpenCV/app/src/main/cpp/opencv/lib/armeabi-v7a/libopencv_core.a
cmake_minimum_required(VERSION 3.22.1)

project("opencv")

set(OPENCV ${CMAKE_SOURCE_DIR}/opencv) # opencv的路径
include_directories(${OPENCV}/include) # 导入opencv的头文件
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${OPENCV}/lib/${CMAKE_ANDROID_ARCH_ABI}") # opencv库路径

add_library(${CMAKE_PROJECT_NAME} SHARED
        native-lib.cpp)

#include_directories(${ANDROID_NDK}/sources/android/cpufeatures)
#add_library(cpufeatures STATIC
#        ${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c)

include(AndroidNdkModules)
android_ndk_import_module_cpufeatures()

target_link_libraries(${CMAKE_PROJECT_NAME}
        opencv_calib3d
        opencv_core
        opencv_dnn
        opencv_features2d
        opencv_flann
        opencv_gapi
        opencv_highgui
        opencv_imgcodecs
        opencv_imgproc
        opencv_ml
        opencv_objdetect
        opencv_photo
        opencv_stitching
        opencv_video
        opencv_videoio
        android
        cpufeatures
        log)