当前位置: 首页 > article >正文

opencv2.4 android编译

背景见我的前一篇博客:opencv 编译Simple,转眼6年过去了,最近有个东西想尝试基于opencv来做,所以有本文。

一些背景知识

  1. opencv1.1已经不再维护,目前只能从github中找到一个历史的版本: https://github.com/archith/opencv_1.1
  2. opencv2.x 3.x 4.x 5.x 都有完善的cmake编译脚本,编译起来都比较容易。参考我前一篇博客
  3. opencv2.x 中含有nonfree的模块,比如surf,sirf。这部分代码在后面的仓库中,被移动到 opencv_contrib 中。
  4. https://opencv.org/releases/ 中提供的库都没有包含nonfree的模块,如果需要使用nofree的模块需要自己拉代码下来编译。
  5. 一些基于release做二次处理的库,比如https://github.com/nihui/opencv-mobile 也是没有包含nonfree的模块。

opencv2.4.13.7 for android

ubuntu22 ubuntu18

Before start

# ubuntu 22
sudo apt-get install libgtk2.0-dev 

Get souce code

git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 2.4.13.7

Make for android

download ndk: https://developer.android.google.cn/ndk/downloads?hl=zh-cn

export ANDROID_NDK=/home/yeshen_org/Android/android-ndk-r20b && \
export ANDROID_SDK_ROOT=/home/yeshen_org/Android/Sdk && \
export ANDROID_SDK_ROOT=/home/yeshen_org/Android/Sdk && \
export ANDROID_NATIVE_API_LEVEL=24 && \
export STRIP=/home/yeshen_org/Android/android-ndk-r20b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip

# arm64-v8a
rm -rf build-arm64 && mkdir build-arm64 && cd build-arm64
cmake -DCMAKE_TOOLCHAIN_FILE=/home/yeshen_org/Android/android-ndk-r20b/build/cmake/android.toolchain.cmake \
-DANDROID_TOOLCHAIN=clang++ -DANDROID_ABI=arm64-v8a \
-D CMAKE_BUILD_TYPE=Release -D ANDROID_NATIVE_API_LEVEL=24 \
-D WITH_CUDA=OFF -D WITH_MATLAB=OFF \
-D BUILD_ANDROID_EXAMPLES=OFF -D BUILD_DOCS=OFF \
-D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF \
-D ANDROID_STL=c++_shared -D BUILD_SHARED_LIBS=ON \
-D BUILD_opencv_objdetect=ON -D BUILD_opencv_video=ON \
-D BUILD_opencv_videoio=ON -D BUILD_opencv_features2d=ON \
-D BUILD_opencv_flann=ON -D BUILD_opencv_highgui=ON \
-D BUILD_opencv_ml=ON -D BUILD_opencv_photo=ON \
-D BUILD_opencv_python=OFF \
-D BUILD_androidcamera=OFF \
-D BUILD_opencv_legacy=ON \
-D BUILD_opencv_ocl=ON \
-D BUILD_opencv_gpu=ON \
-DBUILD_ANDROID_PROJECTS=OFF ..
make -j8
# see lib/arm64-v8a


# armeabi-v7a
rm -rf build-arm32 && mkdir build-arm32 && cd build-arm32
cmake -DCMAKE_TOOLCHAIN_FILE=/home/yeshen_org/Android/android-ndk-r20b/build/cmake/android.toolchain.cmake \
-DANDROID_TOOLCHAIN=clang++ -DANDROID_ABI=armeabi-v7a \
-D CMAKE_BUILD_TYPE=Release -D ANDROID_NATIVE_API_LEVEL=24 \
-D WITH_CUDA=OFF -D WITH_MATLAB=OFF \
-D BUILD_ANDROID_EXAMPLES=OFF -D BUILD_DOCS=OFF \
-D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF \
-D ANDROID_STL=c++_shared -D BUILD_SHARED_LIBS=ON \
-D BUILD_opencv_objdetect=ON -D BUILD_opencv_video=ON \
-D BUILD_opencv_videoio=ON -D BUILD_opencv_features2d=ON \
-D BUILD_opencv_flann=ON -D BUILD_opencv_highgui=ON \
-D BUILD_opencv_ml=ON -D BUILD_opencv_photo=ON \
-D BUILD_opencv_python=OFF \
-D BUILD_androidcamera=OFF \
-D BUILD_opencv_legacy=ON \
-D BUILD_opencv_ocl=ON \
-D BUILD_opencv_gpu=ON \
-DBUILD_ANDROID_PROJECTS=OFF ..
make -j8
# see lib/armeabi-v7a

# x86
rm -rf build-x86 && mkdir build-x86 && cd build-x86
cmake -DCMAKE_TOOLCHAIN_FILE=/home/yeshen_org/Android/android-ndk-r20b/build/cmake/android.toolchain.cmake \
-DANDROID_TOOLCHAIN=clang++ -DANDROID_ABI=x86 \
-D CMAKE_BUILD_TYPE=Release -D ANDROID_NATIVE_API_LEVEL=24 \
-D WITH_CUDA=OFF -D WITH_MATLAB=OFF \
-D BUILD_ANDROID_EXAMPLES=OFF -D BUILD_DOCS=OFF \
-D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF \
-D ANDROID_STL=c++_shared -D BUILD_SHARED_LIBS=ON \
-D BUILD_opencv_objdetect=ON -D BUILD_opencv_video=ON \
-D BUILD_opencv_videoio=ON -D BUILD_opencv_features2d=ON \
-D BUILD_opencv_flann=ON -D BUILD_opencv_highgui=ON \
-D BUILD_opencv_ml=ON -D BUILD_opencv_photo=ON \
-D BUILD_opencv_python=OFF \
-D BUILD_androidcamera=OFF \
-D BUILD_opencv_legacy=ON \
-D BUILD_opencv_ocl=ON \
-D BUILD_opencv_gpu=ON \
-DBUILD_ANDROID_PROJECTS=OFF ..
make -j8
# see lib/x86

参考

  1. latest-android-ndk

玩~


http://www.kler.cn/a/153719.html

相关文章:

  • 内存免杀--
  • ubuntu18编译Android8的Failed to contact Jack server问题
  • 激光SLAM:Faster-Lio 算法编译与测试
  • python+pytest接口自动化(6)-请求参数格式的确定
  • LeetCode56. 合并区间
  • FL Studio2024重磅更新 带你了解FL21.2最新版本功能
  • C语言 柔性数组
  • RK3568笔记六:基于Yolov8的训练及部署
  • LCR 047. 二叉树剪枝 和 leetCode 1110. 删点成林 + 递归 + 图解
  • CentOS 系列:CentOS 7 使用 virt-install + vnc 图形界面/非图形界面 创建虚拟机
  • clickhouse的向量化执行
  • 熬夜会秃头——Beta冲刺总结随笔
  • 39.从0到上线三天搭建个人网站(第三天)
  • Node.js入门指南(完结)
  • 【Apache Doris】Manager极致丝滑地运维管理
  • IO流--12--Java lO 设计模式
  • Kibana使用指南
  • 开源图床Qchan本地部署远程访问,轻松打造个人专属轻量级图床
  • 「Verilog学习笔记」自动贩售机1
  • MySQL索引有哪些优缺点