记录安卓上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 ..

说明:

  1. $ANDROID_NDK 为ndk路径
  2. 上面命令是静态库编译 动态库编译更改编译选项 (-DOpenCV_STATIC=OFF -DBUILD_SHARED_LIBS=ON -DANDROID_STL=c++_shared)
  3. 根据需求修改自己的编译选项,我基本上都没有打开其他的编译选项
  4. 如果需要编译contrib 库 可以 带上(
    -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.12/modules/
    -DOPENCV_ENABLE_NONFREE=True
    )
posted @ 2021-09-06 20:37  cc96  阅读(211)  评论(0编辑  收藏  举报