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)