​Qt+openCV学习笔记(七)openCV4.5.4+android-ndk-r21-windows-x86_64编译arm64-v8a动、静态库​

 前言:

今天编译程序时,发现静态库有问题,被迫重新编译一次

编译android库,同时增加附加库

本次假设读者已经正常安装Qt

 一、安装需要的软件

1.安装git

这方便教程很多,不再重复。笔者使用的是git2.33

2.安装cmake

这个教程也很多,但笔者没有安装,使用的是Qt安装时,下载的

3.android NDK

下载地址:不受支持的 NDK 下载  |  Android NDK  |  Android Developers

笔者没有单独下载,因为在配置Qt for android时,已经自动下载完成了

二、下载所需要的资源

 1.下载opencv4.5.4源码

https://github.com/opencv/opencv/archive/refs/tags/4.5.4.zip

2下载opencv_contrib-4.5.4源码

https://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.4.zip

2.wechat_qrcode模型

detect.caffemodel

detect.prototxt

sr.caffemodel

sr.prototxt

3.xfeatures2d

boostdesc_bgm.i

boostdesc_bgm_bi.i

boostdesc_bgm_hd.i

boostdesc_binboost_064.i

boostdesc_binboost_128.i

boostdesc_binboost_256.i

boostdesc_lbgm.i

vgg_generated_48.i

vgg_generated_64.i

vgg_generated_80.i

vgg_generated_120.i

4.face_landmark_model.dat

以上资源笔者已经下载完成,有需要的可以直接下载下载

三、设置环境变量

环境变量设置方法很多,可以直接设置系统的环境变量,笔者使用的是在一个cmd窗口中临时设置环境变量

执行如下命令

//设置环境变量
set path=D:\Qt\Tools\mingw810_64\bin;D:\Qt\Tools\CMake_64\bin;%path%
//设置android NDK目录
SET ANDROID_NDK=E:\software\android\sdk-tools-windows-4333796\ndk\21.3.6528147

若是查看环境变量执行如下

echo %path%

四、生成make文件

在设置好环境变量的cmd中执行(请按实际目录执行)

D:\Qt\Tools\CMake_64\bin\cmake-gui.exe

打开如下窗口

在cmake-gui中,点击Add Entry,增加ANDROID_ABI,值为arm64-v8a

注:一定要在configure前添加,否则修改也不再使用,会使用默认的armeabi-v7a编译器

点击configure,弹出如下窗口

 以上是笔者的设置,点击Next,

设置工具链文件,以下是笔者的设置

 

PS. 记得,要设置NDK目录下的,不是源码目录下的,笔者的泪啊!

 之后就是等待完成,第一次时间会有点长

 configure完成后,修改配置选项

以下是笔者感兴趣的选项

安装目录(生成的静态库的目录)

 是否生成动态库

是否生成付费相关的部分

 添加贡献库,注意要具体到modules目录

是否将所有库编译到一个文件中,建议新手前期勾选,以降低开发难度

 

 以下参数根据需求调整

  • BUILD_ANDROID_PROJECTS 不需要示例项目可直接取消勾选

  • BUILD_ANDROID_EXAMPLES = OFF

  • BUILD_PERF_TESTS = OFF

  • BUILD_TESTS = OFF

  • BUILD_opencv_world = OFF (生成 .so 库 libopencv_world.so,这是一个集合,不清楚和默认编译的 libopencv_java4.so 有什么区别,默认不开启,如果开启的话不会复制 java 层函数,也就是 cmake 的 gui 界面会显示 Java wrappers: NO)

  • BUILD_SHARED_LIBS = OFF (如果 On 则只编译 so 库)

  • WITH_CUDA = OFF (CUDA 是 NVidia 推出的并行计算架构,编译非安卓 SDK 时建议添加)

  • WITH_OPENCL = ON (因为我们编译的是 android sdk,所以建议添加移动端的并行架构支持)

  • WITH_OPENCL_SVM = ON (建议开启共享虚拟内存)

调整完后再次点击Configure,完成后点击Generate。

部分选项可能需要多点几次才能出现

继续点击configure(可以多点几次,有时多点几次就可以下载成功),

若输出中仍然存在红色的文字,打开编译目录,找到日志文件CMakeDownloadLog.txt,查看缺少或下载失败的文件,下载完成后,按日志文件的提示,放入指定目录即可

笔者已下载下载缺少的文件,处理方法如下

1.把downloads,直接放在编译目录(笔者已整理好内部目录)

2.把testdata两个目录,放在编译目录下的sdk/etc目录(笔者已整理好内部目录)

再次点击configure,此时应该不会有红色的文字了(若存在,请自主解决)

点击generate,生成makefile文件

四、编译源码

设置好环境变量的cmd中,切换目录到编译目录(请按实际目录执行)

执行mingw32-make -j6 开始编译

(6代表同时开6个线程编译,请读者按照自己机器的配置设置,以加快编译速度)

些过程耗时较长,笔者等待了20分钟左右

编译完成后,执行mingw32-make install

过会就可以在安装目录找到生成的静态库了,笔者是在编译目录下的install

注意:此时只生成了arm64-v8a的静态库,若需要动态库,请继续往下看

五、生成make文件(动态库)

打开cmake-gui,修改以下选项

修改完成后,再次点击configure,此时应该不会有红色的文字(若存在,请自主解决)

点击generate,生成makefile文件

六、第二次编译源码

设置好环境变量的cmd中,切换目录到编译目录(请按实际目录执行)

执行mingw32-make -j6 开始编译

(6代表同时开6个线程编译,请读者按照自己机器的配置设置,以加快编译速度)

些过程耗时较长,笔者等待了20分钟左右

编译完成后,执行mingw32-make install

过会就可以在安装目录找到生成的动态库了,笔者是在编译目录下的install

前目录为止,已经编译完成arm64-v8a的动态库和静态库

因时间关系,笔者本次就不添加测试程序了

可能会遇到的问题

1.cmake时,遇到如下错误

解决方法:

修改如下配置选项

 然后重新configure

已生成的动态库和静态库(arm64-v8a)

后记:

1.原本以为昨天就已经成功编译出,但今天测试时发现无法编译arm64-v8a版的程序,所以今天又重新编译了一次

2.因为没勾选"BUILD_opencv_world",所以生成了多个库文件,方便打包时缩小体积。同时也对初学者很不友好,若是有时间,会再写一份加载不同库文件的文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁白杨树下꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值