美文网首页
opencv+opencv_contrib交叉编译android

opencv+opencv_contrib交叉编译android

作者: 有心人2021 | 来源:发表于2021-03-21 15:30 被阅读0次

因为项目需要编译opencv安卓动态库,应用于armv8-64平台,记录下编译过程。

一、交叉编译环境

  1. 系统:centos 8.1
  2. ndk
    ndk版本:/home/atguigu/ex/android-ndk-r20b
    ndk地址:https://developer.android.google.cn/ndk/downloads/index.html
#修改环境变量
sudo vim etc/profile
#etc/profile末尾
export NDKROOT=/home/atguigu/ex/android-ndk-r20b
export PATH=$NDKROOT:$PATH
#启用环境变量
source profile
  1. cmake安装
    cmake:cmake version 3.18.6
    具体详细见:
    https://www.jianshu.com/p/fe902d61bcdb
  2. ant安装
    为了能打包生成.so需要ant,
sudo yum -y install ant
#配置/etc/profile
export ANT_HOME="/usr/share/ant" # do not add "bin" at the end of the path
export PATH="$ANT_HOME/bin:$PATH"
#启用环境变量
source profile

二.编译opencv

1.下载编译文件

#进入用户空间
cd ~
#创建文件夹
mkdir opencv_jar_build

cd opencv_jar_build
#下载opencv
wget https://github.com/opencv/opencv/archive/refs/tags/3.4.12.tar.gz
#解压opencv
tar -zxvf 3.4.12.tar.gz
rm *.gz
#下载opencv_contrib,并解压
wget https://github.com/opencv/opencv_contrib/archive/refs/tags/3.4.12.tar.gz
tar -zxvf 3.4.12.tar.gz
ls -l
drwxrwxr-x 14 atguigu atguigu  303 Mar 21 11:37 opencv-3.4.12
drwxrwxr-x  6 atguigu atguigu  176 Sep 29 05:29 opencv_contrib-3.4.12

2.创建编译脚本
命令过长,得用脚本
在opencv_jar_build下,即opencv-3.4.12同级别下

#创建.sh文件
touch build.sh
vim build.sh
#build.sh内容
rm -rf build
mkdir build
cd build

#-DCMAKE_INSTALL_PREFIX="/home/atguigu/opencv_jar_build/install" \
#注意cmake语法,=ON后面需要带英文空格,\表示换行,后面加换行到下一行
cmake -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
        -DCMAKE_TOOLCHAIN_FILE="${NDKROOT}/build/cmake/android.toolchain.cmake"\
        -DANDROID_NDK="${NDKROOT}" \
        -DANDROID_NATIVE_API_LEVEL=24 \
        -DANDROID_ABI="arm64-v8a" \
        -D WITH_CUDA=OFF \
        -D WITH_MATLAB=OFF \
        -DANDROID_STL=c++_static \
        -DBUILD_ANDROID_PROJECTS=OFF \
        -DBUILD_ANDROID_EXAMPLES=OFF \
        -D BUILD_DOCS=OFF \
        -DBUILD_OPENCV_JAVA=ON \
        -DANT_EXECUTABLE=${ANT_HOME} \
        -D BUILD_PERF_TESTS=OFF \
        -D BUILD_TESTS=OFF \
        -DOPENCV_EXTRA_MODULES_PATH="/home/atguigu/opencv_jar_build/opencv_contrib-3.4.12/modules/" \
        -DCMAKE_INSTALL_PREFIX="/home/atguigu/opencv_jar_build/opencv-3.4.12" \
        ../opencv-3.4.12
#多线程编译
make -j8 
#安装编译结果,这里会安装到/home/atguigu/opencv_jar_build/opencv-3.4.12/sdk下
make install

也用opencv4.5.1,加上ant试了n次都报错,去掉又可以,有点莫名奇妙
3.4.12可以

#目标结果
cd /home/atguigu/opencv_jar_build/opencv-3.4.12/sdk
tree -L 2
.
├── etc
│   ├── haarcascades
│   ├── lbpcascades
│   ├── licenses
│   ├── valgrind_3rdparty.supp
│   └── valgrind.supp
└── native
    ├── 3rdparty
    ├── jni
    ├── libs
    └── staticlibs

staticlibs中有.so,jni中有include,这是android所需要的

相关文章

网友评论

      本文标题:opencv+opencv_contrib交叉编译android

      本文链接:https://www.haomeiwen.com/subject/vknncltx.html