From ed504d0edb7967060c2265f67c04db3be387b7f8 Mon Sep 17 00:00:00 2001 From: yewuya Date: Sat, 22 Jan 2022 16:24:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0opencv=20Android=20=E7=BC=96?= =?UTF-8?q?=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MSDK常用api.md | 4 + ...编译OpenCV 和OpenCV_contrib android版本.md | 109 ++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 手动编译OpenCV 和OpenCV_contrib android版本.md diff --git a/MSDK常用api.md b/MSDK常用api.md index 8a296a1..06d394d 100644 --- a/MSDK常用api.md +++ b/MSDK常用api.md @@ -38,3 +38,7 @@ ![image-20211009155336059](https://yewuyadeimagewall.oss-cn-hangzhou.aliyuncs.com/image-20211009155336059.png) +## 获取避障信息 + +![image-20211102160558403](https://yewuyadeimagewall.oss-cn-hangzhou.aliyuncs.com/image-20211102160558403.png) + diff --git a/手动编译OpenCV 和OpenCV_contrib android版本.md b/手动编译OpenCV 和OpenCV_contrib android版本.md new file mode 100644 index 0000000..3f7472a --- /dev/null +++ b/手动编译OpenCV 和OpenCV_contrib android版本.md @@ -0,0 +1,109 @@ +# 手动编译OpenCV 和OpenCV_contrib android版本 +## 安装编译工具 +### 基础工具安装 +```sh +sudo apt install build-essential python wget git python-pip +pip install ninja +sudo apt install ant libcurl4-gnutls-dev zlib1g-dev +``` +### cmake 安装 +```sh +wget --no-check-certificate https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1.tar.gz +tar -zxvf cmake-3.22.1.tar.gz +cd cmake-3.22.1 +./bootstrap --system-curl +make -j8 # 8为CPU核心数 +sudo make install +cmake --version #查看是否正常安装cmake + +``` + +### [Ccache ](https://ccache.dev/)安装 + +```sh +wget --no-check-certificate https://github.com/ccache/ccache/releases/download/v3.7.12/ccache-3.7.12.tar.gz +tar -zxvf ccache-3.7.12.tar.gz +cd ccache-3.7.12 +./configure +make -j8 # 8为CPU核心数 +sudo make install +``` + +### Android sdk ndk Java jdk安装 +* 下载SDK wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz +* [NDK](https://github.com/android/ndk/wiki/Unsupported-Downloads) [JDK](https://www.oracle.com/java/technologies/downloads/)文件并解压文件,修改.bashrc文件,添加如下内容 + +```sh +export ANDROID_SDK=/home/ehigh/android_sdk #sdk路径 +export PATH=$ANDROID_SDK/tools:$PATH +export ANDROID_NDK=/home/ehigh/android_ndk #ndk路径 +export PATH=${PATH}:$ANDROID_NDK +export JAVA_HOME=/home/ehigh/java8 # jdk路径 +export JRE_HOME=${JAVA_HOME}/jre +export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib +export PATH=${JAVA_HOME}/bin:$PATH +# 保存后执行 source .bashrc 使修改生效 +android -h # 验证Android sdk 版本 +``` + +* 安装需要的组件版本 + +```sh +android update sdk -u --all --filter 29,62 +``` + +## opencv 代码下载&& 配置 +* 代码下载 +```sh +mkdir android_opencv +cd android_opencv +git clone https://github.com/opencv/opencv_contrib.git +git clone https://github.com/opencv/opencv.git +``` +* NDK配置修改 +修改文件 /opencv/platforms/android/ndk-22.config.py ,修改GRADLE版本为Android项目的版本 +```sh +ABIs = [ + ABI("1", "arm64-v8a", None, cmake_vars=dict(ANDROID_GRADLE_PLUGIN_VERSION='4.2.0', GRADLE_VERSION='6.7.1', KOTLIN_PLUGIN_VERSION='1.5.0')), +] +``` + +* 编译配置修改 + + 修改文件/opencv/platforms/android/build_sdk.py,修改cmake_var 为如下内容 + + ```python + def build_library(self, abi, do_install): + cmd = [self.cmake_path, "-GNinja"] + cmake_vars = dict( + CMAKE_TOOLCHAIN_FILE=self.get_toolchain_file(), + INSTALL_CREATE_DISTRIB="ON", + WITH_OPENCL="OFF", + BUILD_KOTLIN_EXTENSIONS="ON", + WITH_IPP=("ON" if abi.haveIPP() else "OFF"), + WITH_TBB="ON", + OPENCV_ENABLE_NONFREE="ON", # 添加这一行,添加编译opencv_contrib + BUILD_EXAMPLES="OFF", + BUILD_TESTS="OFF", + BUILD_PERF_TESTS="OFF", + BUILD_DOCS="OFF", + BUILD_ANDROID_EXAMPLES="ON", + INSTALL_ANDROID_EXAMPLES="OFF", + ) + ``` +## 编译代码 + +```sh +cd android_opencv +mkdir opencv_build +cd opencv_build +python ../opencv/platforms/android/build_sdk.py --extra_modules_path=../opencv_contrib/modules/ --config /home/yewuya/opencv/platforms/android/ndk-22.config.py # ndk-17要与下载的ndk版本对应 +``` +* 编译完成后opencv_build 文件夹下的OpenCV-android-sdk 即为编译出来的结果 + +## Android 项目导入opencv sdk + + + + +