使用最新版本Android NDK-r21 编译 opencv-3.3.1 + opencv_contrib-3.3.1


由于新版本的NDK跟旧版本NDK编译的opencv存在兼容问题,所以需要使用最新的NDK重新编译opencv,方法步骤如下:
Android NDK-r21 编译 opencv-3.3.1 + opencv_contrib-3.3.1

1. sudo apt-get install cmake

2. 官网下载NDK: android-ndk-r21,SDK可以不需要.

3. 下载opencv和opencv_contrib,切换到3.3.1版本.
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
推荐更快的国内地址:
https://www.bzblog.online/wordpress/index.php/2020/03/09/opencvdownload/

4. 下载path包:
如果你要问我为什么,我只能告诉你,这个是我踩过的坑(参考:https://github.com/opencv/opencv_contrib/issues/1301).
https://github-production-repository-file-5c1aeb.s3.amazonaws.com/12756992/4520852?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20201212%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20201212T150158Z&X-Amz-Expires=300&X-Amz-Signature=63b69d60980b1e7f6828c312b27a2601fc49e758ddad57907753fc072d266a7e&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=12756992&response-content-disposition=attachment%3Bfilename%3Dpatch__.zip&response-content-type=application%2Fzip
解压到目录:
/home/gmy/disk0/xxxx/gitee/opencv/opencv-3.3.1/.cache/xfeatures2d/

5. 进入opencv源码目录,配置好相关变量路径,然后执行下面的脚本.

6. 地址: https://gitee.com/forme98/opencv_and_opencv_contrib.git

###########################################################################
#!/bin/sh

ndkdir=/home/gmy/Android/android-ndk-r21
android_toolchain_cmake=$ndkdir/build/cmake/android.toolchain.cmake
export ANDROID_NDK=/home/gmy/Android/android-ndk-r21
#arm_abi=arm64-v8a
arm_abi=armeabi-v7a
androidSdkAPI=24
opencv_contrib_dir=/home/gmy/disk0/xxxx/gitee/opencv/opencv_contrib-3.3.1/modules
opencv_dir=/home/gmy/disk0/xxxx/gitee/opencv/opencv-3.3.1

cd $opencv_dir
rm -rf build && mkdir build
cp build.sh build/
cd build/

cmake $opencv_dir -DCMAKE_TOOLCHAIN_FILE=${android_toolchain_cmake} -DANDROID_ABI=$arm_abi -DANDROID_STL=c++_static -DCMAKE_BUILD_TYPE=Release -DANDROID_NATIVE_API_LEVEL=android-$androidSdkAPI -DANDROID_PLATFORM=$androidSdkAPI -DOPENCV_EXTRA_MODULES_PATH=$opencv_contrib_dir

make -j12 && make install

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要基于 AndroidOpenCV 4.0.1 和 OpenCV Contrib 4.0.1 进行编译,可以按照以下步骤进行: 1. 下载 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 的源代码: ``` git clone https://github.com/opencv/opencv.git cd opencv git checkout 4.0.1 cd .. git clone https://github.com/opencv/opencv_contrib.git cd opencv_contrib git checkout 4.0.1 ``` 2. 安装 Android NDKAndroid SDK,并设置相应的环境变量。 3. 在 opencv 目录下创建一个 build 目录,并进入该目录: ``` mkdir build cd build ``` 4. 运行以下命令,生成 OpenCV Android 库: ``` cmake -DANDROID_ABI=armeabi-v7a \ -DANDROID_PLATFORM=android-21 \ -DANDROID_TOOLCHAIN=clang \ -DANDROID_STL=c++_static \ -DWITH_OPENCL=OFF \ -DWITH_IPP=OFF \ -DWITH_TBB=OFF \ -DWITH_MATLAB=OFF \ -DWITH_CUDA=OFF \ -DWITH_GTK=OFF \ -DBUILD_opencv_apps=OFF \ -DBUILD_ANDROID_EXAMPLES=OFF \ -DBUILD_ANDROID_PROJECTS=OFF \ -DBUILD_DOCS=OFF \ -DBUILD_EXAMPLES=OFF \ -DBUILD_PACKAGE=OFF \ -DBUILD_PERF_TESTS=OFF \ -DBUILD_TESTS=OFF \ -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=../../android.toolchain.cmake \ ../ ``` 其中,`ANDROID_ABI` 表示 Android 平台架构,这里设置为 `armeabi-v7a`,表示 ARMv7 架构;`ANDROID_PLATFORM` 表示 Android 平台版本,这里设置为 `android-21`;`ANDROID_TOOLCHAIN` 表示使用的工具链,这里设置为 `clang`;`ANDROID_STL` 表示使用的 C++ 标准库,这里设置为 `c++_static`,表示静态链接;`WITH_OPENCL`、`WITH_IPP`、`WITH_TBB`、`WITH_MATLAB`、`WITH_CUDA`、`WITH_GTK` 分别表示是否启用 OpenCL、IPP、TBB、MATLAB、CUDA、GTK 等功能,这里都设置为 `OFF`;`BUILD_opencv_apps`、`BUILD_ANDROID_EXAMPLES`、`BUILD_ANDROID_PROJECTS`、`BUILD_DOCS`、`BUILD_EXAMPLES`、`BUILD_PACKAGE`、`BUILD_PERF_TESTS`、`BUILD_TESTS` 分别表示是否编译 OpenCV 应用程序、Android 示例、Android 项目、文档、示例、打包、性能测试、测试,这里都设置为 `OFF`;`OPENCV_EXTRA_MODULES_PATH` 表示 OpenCV Contrib 目录的路径;`CMAKE_BUILD_TYPE` 表示编译类型,这里设置为 `Release`;`CMAKE_TOOLCHAIN_FILE` 表示使用的交叉编译工具链文件。 5. 运行以下命令,编译生成 OpenCV Android 库: ``` make -j4 ``` 其中,`-j4` 表示使用 4 个核心进行编译。 6. 在 build 目录下会生成一个 `sdk` 目录,其中包含编译好的 OpenCV Android 库。 可以将该库导入到 Android Studio 中,然后在项目中使用该库提供的函数进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值