记录安卓上opencv编译
说明
参考 https://zhuanlan.zhihu.com/p/301203711
opencv contrib 下载: https://github.com/opencv/opencv_contrib
依赖
- opencv3.4.12(低版本的如3.2.0,我编译失败了,我也懒得去找错误原因,换了一个高版本的opencv就编译过了,后面试过opencv4.2的版本也没问题)
- 安卓ndk r23 (r22遇到了错误更换r23解决 参考 https://github.com/android/ndk/issues/1179)
我是在ubuntu下进行编译。
编译命令
export ANDROID_NDK=/home/cc/data/cc/Android/Sdk/ndk/23.0.7344513
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
-DCMAKE_INSTALL_PREFIX=/home/cc/software/opencv-3.4.12/install \
-DANDROID_ABI="arm64-v8a" \
-DANDROID_NATIVE_API_LEVEL=android-21 \
-DANDROID_ARM_NEON=TRUE \
-DBUILD_opencv_java=OFF \
-DBUILD_ANDROID_PROJECTS=OFF \
-DBUILD_ANDROID_EXAMPLES=OFF \
-DBUILD_DOCS=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_opencv_ittnotify=OFF \
-DBUILD_ITT=OFF \
-DWITH_CUDA=OFF \
-DWITH_OPENCL=OFF \
-DWITH_OPENCLAMDFFT=OFF \
-DWITH_OPENCLAMDBLAS=OFF \
-DWITH_VA_INTEL=OFF \
-DCPU_BASELINE_DISABLE=ON \
-DENABLE_SSE=OFF \
-DENABLE_SSE2=OFF \
-DBUILD_TESTING=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_TESTS=OFF \
-DCMAKE_BUILD_TYPE=RELEASE \
-DBUILD_EXAMPLES=OFF \
-DBUILD_DOCS=OFF \
-DBUILD_opencv_apps=OFF \
-DWITH_1394=OFF \
-DWITH_ARITH_DEC=OFF \
-DWITH_ARITH_ENC=OFF \
-DWITH_CUBLAS=OFF \
-DWITH_CUFFT=OFF \
-DWITH_FFMPEG=OFF \
-DWITH_GDAL=OFF \
-DWITH_GSTREAMER=OFF \
-DWITH_GTK=OFF \
-DWITH_HALIDE=OFF \
-DWITH_JASPER=OFF \
-DWITH_NVCUVID=OFF \
-DWITH_OPENEXR=OFF \
-DWITH_PROTOBUF=OFF \
-DWITH_PTHREADS_PF=OFF \
-DWITH_QUIRC=OFF \
-DWITH_V4L=OFF \
-DWITH_WEBP=OFF \
-DWITH_MATLAB=OFF \
-DANDROID_STL=c++_static \
-DBUILD_SHARED_LIBS=OFF \
-DOpenCV_STATIC=ON \
-DCMAKE_CXX_FLAGS_RELEASE=-g2 ..
说明:
- $ANDROID_NDK 为ndk路径
- 上面命令是静态库编译 动态库编译更改编译选项 (-DOpenCV_STATIC=OFF -DBUILD_SHARED_LIBS=ON -DANDROID_STL=c++_shared)
- 根据需求修改自己的编译选项,我基本上都没有打开其他的编译选项
- 如果需要编译contrib 库 可以 带上(
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.12/modules/
-DOPENCV_ENABLE_NONFREE=True
)