Qt for Android 之 OpenCV编译(Windows下编译)

简介

前两天刚好更新了4.10, 这里以4.10作为示例进行编译, Qt版本是Qt6.6.2。

准备OpenCV的Android库

一. 使用官方编译好的库

1. 下载OpenCV android SDK

opencv-4.10.0-android-sdk.zip

2. 解压缩

官方提供的包含了多个架构的opencv android库
在这里插入图片描述

二. 自行编译

注意:
本篇只编译下载的源码, 并没有更新扩展, 有需要的话自行下载并按照如下方式设置编译: 添加OpenCV扩展模块:
1) 下载最新扩展 opencv_contrib
2) 在cmake-gui中添加值, 如下图
OPENCV_EXTRA_MODULES_PATH-》PATH-》<opencv_contrib>/modules
在这里插入图片描述

1. 下载OpenCV

opencv-4.10.0-windows.exe
下载完毕之后运行, 程序将源码解压缩到本地你自己设定的路径。

2. 编译

参考 官方OpenCV-Android-SDK编译

编译前准备
Qt for Android 编译套件使用的NDK是25.1.x, 所以后面NDK版本选择由此而来
在这里插入图片描述

1)打开终端 cmd.exe
2) 设置将编译器环境添加到环境变量
注: 这样添加只对打开的这个cmd.exe生效
SET PATH=%PATH%;D:\Softwares\Paths\msys64\mingw64\bin
此环境包含mingw32-make.exe, gcc, g++, python3, cmake-gui等编译所需

  1. 设置Android环境变量
    SET OPENCV_SRC_FOLDER=E:\test\opencv\sources
    SET CONTRIB_SRC_FOLDER=E:\test\opencv_contrib-4.x
    SET OPENCV_BUILD_FOLDER=E:\test\opencv\sources\build
    SET ANDROID_SDK=D:\Softwares\Paths\Android\android-sdk
    SET ANDROID_NDK_HOME=D:\Softwares\Paths\Android\android-sdk\ndk\25.1.8937393

  2. 执行编译指令

ndk-25.config.py 此次ndk是25版本, 所以选择这个文件执行 no_samples_build 不需要编译示例
–extra_modules_path %CONTRIB_SRC_FOLDER%/modules # 如果不需要更新扩展模块, 去掉这部分
执行:
D:\Softwares\Paths\msys64\mingw64\bin\python3
%OPENCV_SRC_FOLDER%/platforms/android/build_sdk.py
%OPENCV_BUILD_FOLDER% %OPENCV_SRC_FOLDER% --ndk_path
%ANDROID_NDK_HOME% --sdk_path %ANDROID_SDK% --extra_modules_path
%CONTRIB_SRC_FOLDER%/modules --no_samples_build --config
%OPENCV_SRC_FOLDER%/platforms/android/ndk-25.config.py

  1. 等待编译完毕
    编译画面截图, 编译中的错误解决参考下文“编译中遇到的错误”, 编译之后安装路径如下图所示:
    在这里插入图片描述
    编译后目录支持架构:
    在这里插入图片描述

三. 编译中遇到的错误

  1. gradle-7.5.1 下载失败
    在这里插入图片描述
    解决, 手动下载, 并放到C:\Users\Administrator.gradle\wrapper\dists\gradle-7.5.1-all\1ehga6e77gqps5uk2kc5kf1vc 目录下
    https://services.gradle.org/distributions/gradle-7.5.1-all.zip

提示: ndk-25.config.py文件中有需要的gradle版本,可以提前自己看下环境是否包含

四. 查看编译参数

使用cmake-gui直观的查看官方配置文件生成的编译参数,如下图:
在这里插入图片描述

Qt for Android项目导入OpenCV

Note : .pro或.pri不要写中文备注,容易出现莫名错误
.pro 中添加如下内容

android {
    # OPENCV_ANDROID=E:/test/opencv/sources/build/OpenCV-android-sdk
    OPENCV_ANDROID=E:/OpenCV-android-sdk

    # ANDROID_TARGET_ABIS = armeabi-v7a arm64-v8a x86 x86_64
    # for(a, ANDROID_TARGET_ABIS) {
    #     android_add_jni_libs.path = $$PWD/libs/$$a
    #     android_add_jni_libs.sources = $$a/libopencv_java4.so
    # }

    contains(ANDROID_TARGET_ARCH, armeabi-v7a) {
        isEmpty(OPENCV_ANDROID) {
            error("Let OPENCV_ANDROID point to the opencv-android-sdk, recommended: v4.0")
        }
        INCLUDEPATH += $$OPENCV_ANDROID/sdk/native/jni/include
        #OPENCV3RDPARTYLIBS = $$OPENCV_ANDROID/sdk/native/3rdparty/libs/armeabi-v7a
        OPENCVNATIVESTATICLIBS = $$OPENCV_ANDROID/sdk/native/staticlibs/armeabi-v7a
        OPENCVNATIVELIBS = $$OPENCV_ANDROID/sdk/native/libs/armeabi-v7a
        OPENCV3RDPARTYLIBS=$$OPENCV_ANDROID/sdk/native/3rdparty/libs/armeabi-v7a

        android_add_jni_libs.path = $$OPENCVNATIVELIBS
        android_add_jni_libs.sources = $$OPENCVNATIVELIBS/libopencv_java4.so

        LIBS += \
            $$OPENCVNATIVESTATICLIBS/libopencv_features2d.a \
            $$OPENCVNATIVESTATICLIBS/libopencv_flann.a \
            $$OPENCVNATIVESTATICLIBS/libopencv_gapi.a \
            $$OPENCVNATIVESTATICLIBS/libopencv_highgui.a \
            $$OPENCVNATIVESTATICLIBS/libopencv_imgcodecs.a \
            $$OPENCVNATIVESTATICLIBS/libopencv_imgproc.a \
            $$OPENCVNATIVESTATICLIBS/libopencv_ml.a \
            $$OPENCVNATIVESTATICLIBS/libopencv_objdetect.a \
            $$OPENCVNATIVESTATICLIBS/libopencv_photo.a \
            $$OPENCVNATIVESTATICLIBS/libopencv_stitching.a \
            $$OPENCVNATIVESTATICLIBS/libopencv_video.a \
            $$OPENCVNATIVESTATICLIBS/libopencv_videoio.a \
            $$OPENCVNATIVESTATICLIBS/libopencv_calib3d.a \
            $$OPENCVNATIVESTATICLIBS/libopencv_core.a \
            $$OPENCVNATIVESTATICLIBS/libopencv_dnn.a


        LIBS += \
            $$OPENCV3RDPARTYLIBS/libtegra_hal.a \
            $$OPENCV3RDPARTYLIBS/libade.a \
            $$OPENCV3RDPARTYLIBS/libcpufeatures.a \
            $$OPENCV3RDPARTYLIBS/libIlmImf.a \
            $$OPENCV3RDPARTYLIBS/libittnotify.a \
            $$OPENCV3RDPARTYLIBS/liblibjpeg-turbo.a \
            $$OPENCV3RDPARTYLIBS/liblibopenjp2.a \
            $$OPENCV3RDPARTYLIBS/liblibpng.a \
            $$OPENCV3RDPARTYLIBS/liblibprotobuf.a \
            $$OPENCV3RDPARTYLIBS/liblibtiff.a \
            $$OPENCV3RDPARTYLIBS/liblibwebp.a \
            $$OPENCV3RDPARTYLIBS/libtbb.a
    } else {
            error("Unsupported architecture: $$ANDROID_TARGET_ARCH")
    }
}

其它

OpenCV 4.10官方文档
Custom-OpenCV-Android-SDK-and-AAR-package-build
开源Android投屏软件scrcpy,需要开启USB调试
OpenCV for android编译, 需要梯子
OpenCV for android编译, 需要梯子

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/698408.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【iOS】界面推出的方法

【iOS】界面推出的方法 在学习过程中我们发现在iOS中有两种界面推出的方法&#xff1a;push 和 present这两种方法都可以用来推出一个新的界面 但是这两者是存在区别的 push 方法是通过 UINavigationController 进行导航,新的视图控制器会被压入导航栈中&#xff0c;可以跨级…

java版本ERP管理系统源码 Spring Cloud erp系统,更专业的ERP管理系统

ERP管理系统是一款基于Java技术的企业资源规划系统&#xff0c;集成了Spring Cloud Alibaba、Spring Boot、MybatisPlus、Redis等先进技术&#xff0c;以及前端框架VUE3和ElementUI&#xff0c;致力于为企业提供一个功能全面、性能卓越的微服务架构平台。 系统功能模块及其描述…

实现JWT认证与授权的Spring Boot项目详解

我们将详细介绍如何使用JWT&#xff08;JSON Web Tokens&#xff09;结合Spring Boot框架实现用户认证和授权系统。此方案将包括用户注册、登录以及通过JWT令牌进行后续请求的身份验证过程。我们将从引入必要的依赖开始&#xff0c;然后逐步构建项目的各个部分&#xff0c;包括…

随便写写之——CSDN个人主页布局

最近一直在看题&#xff0c;真的好无聊&#xff0c;晚上睡觉前脑子里想的都是JS&#xff0c;不会是焦虑症犯了吧&#xff0c;赶紧写点东西&#xff0c;现在是上午9点38分&#xff0c;想着写个csdn的布局练练手吧。 现在是11点半&#xff0c;写个将近两个小时就写了那么点&#…

代理设计模式之JDK动态代理CGLIB动态代理原理与源码剖析

代理设计模式 代理模式(Proxy),为其它对象提供一种代理以控制对这个对象的访问。如下图 从上面的类图可以看出,通过代理模式,客户端访问接口时的实例实际上是Proxy对象,Proxy对象持有RealSubject的引用,这样一来Proxy在可以在实际执行RealSubject前后做一些操作,相当于…

微软如何打造数字零售力航母系列科普13 - Prime Focus Technologies在NAB 2024上推出CLEAR®对话人工智能联合试点

Prime Focus Technologies在NAB 2024上推出CLEAR对话人工智能联合试点 彻底改变您与内容的互动方式&#xff0c;从内容的创建到分发 洛杉矶&#xff0c;2024年4月9日/PRNewswire/-媒体和娱乐&#xff08;M&E&#xff09;行业人工智能技术解决方案的先驱Prime Focus Techn…

OpenCV 双目三角法计算点云

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 基于三角法计算点坐标的过程类似于我们人类眼睛观察事物的过程: 如上图所示,通过两个相机观察到同一位置,我们可以通过两个相机得到这一位置的投影坐标 ( u r , v r ) , ( u l , v l )

Flutter - Material3适配

demo 地址: https://github.com/iotjin/jh_flutter_demo 代码不定时更新&#xff0c;请前往github查看最新代码 Flutter - Material3适配 对比图具体实现一些组件的变化 代码实现Material2的ThemeDataMaterial3的ThemeData Material3适配官方文档 flutter SDK升级到3.16.0之后 …

时间处理基础:Rust 的 chrono 库教程

在开发过程中&#xff0c;我们经常有对时间和日期处理的需求。不论是日历应用、日程安排、还是时间戳记录&#xff0c;准确的时间数据处理都是必不可少的。Rust 社区提供的 chrono 库以其强大的功能和灵活的接口&#xff0c;在 Rust 开发者中广受欢迎。本文将简单介绍 chrono 库…

堆盘子00

题目链接 堆盘子 题目描述 注意点 SetOfStacks应该由多个栈组成&#xff0c;并且在前一个栈填满时新建一个栈 解答思路 将多个栈存储到一个List中&#xff0c;当入栈时&#xff0c;如果List中最后一个栈容量已经达到cap&#xff0c;则需要新建一个栈&#xff0c;将元素推到…

pytorch版本与torchvision版本不匹配问题处理

pytorch版本与torchvision版本不匹配问题处理 问题问题复现解决方法两点注意内容其一&#xff1a;pytorch版本与torchvision版本对应关系其二&#xff1a;CPU版本或GPU版本问题 问题 在新环境中&#xff0c;利用yolov8训练模型的时候报错&#xff0c;错误内容如下&#xff1a;…

反射...

一、反射的定义 二、获取Class对象三种方式 全类名&#xff1a;包名类名。 public class test {public static void main(String [] args) throws ClassNotFoundException {//第一种方式Class class1Class.forName("test02.Student");//第二种方法Class class2Stud…

Nginx配置详细解释:(4)高级配置

目录 1.网页的状态页 2.Nginx第三方模块(echo) 3.变量 4.自定义访问日志 5.Nginx压缩功能 6.https功能 7.自定义图标 Nginx除了一些基本配置外&#xff0c;还有一些高级配置&#xff0c;如网页的状态&#xff0c;第三方模块需要另外安装&#xff0c;支持变量&#xff0c…

宽睿数字平台兼容TDengine 等多种数据库,提供行情解决方案

小T导读&#xff1a;最近&#xff0c;涛思数据与宽睿金融宣布了一项重要合作。在此之前&#xff0c;宽睿金融对 TDengine 进行了性能测试&#xff0c;并根据测试报告的结果&#xff0c;决定将 TDengine 接入宽睿数字平台&#xff0c;以提升高密度行情处理效率。本文将详细介绍此…

idea从git拉取代码需要输入token问题解决

idea使用git 推送代码时&#xff0c;提示token问题&#xff0c;这是因为你的代码仓库是gitlab&#xff0c; 然后打开修改代码后推送时&#xff0c;会默认使用gitlab插件&#xff0c;所以提示输入token解决方式就是把gitlab插件取消使用这样就好了。 取消之后再进行拉取代码即可…

【菜狗学前端】在原生微信小程序使用腾讯地图API接口

一直想调用一下地图API接口什么的&#xff0c;刚好遇到了这个实验就浅浅研究写了一下&#xff0c;顺便总结一下给其他没太了解的人一点便利&#xff0c;希望能够对你有所帮助~ 如何引入、配置、使用、显示。 PS:要是嫌麻烦想要源码/有什么问题欢迎评论/私信&#xff0c;问题的话…

[大模型]Gemma2b-Instruct Lora 微调

本节我们简要介绍如何基于 transformers、peft 等框架&#xff0c;对 Gemma2b 模型进行 Lora 微调。Lora 是一种高效微调方法&#xff0c;深入了解其原理可参见博客&#xff1a;知乎|深入浅出 Lora。 这个教程会在同目录下给大家提供一个 nodebook 文件&#xff0c;来让大家更…

AI智能体的分级

技术的分级 人们往往通过对一个复杂的技术进行分级&#xff0c;明确性能、适用范围和价值&#xff0c;方便比较、选择和管理&#xff0c;提高使用效率&#xff0c;促进资源合理分配和技术改进和标准化。 比如&#xff0c;国际汽车工程师学会&#xff08;SAE&#xff09;定义了自…

诊所管理系统有没有免费的?

随着消费市场的不断变化&#xff0c;消费型医疗领域逐渐受到重视&#xff0c;医疗机构面临激烈的行业竞争。为了提升诊所的经营管理效率和营销能力&#xff0c;选择一款合适的诊所管理系统变得尤为重要。然而&#xff0c;面对市场上众多的系统选择&#xff0c;如何找到适合自己…

Linux 安装ab测试工具

yum -y install httpd-tools ab -help #10个并发连接&#xff0c;100个请求 ab -n 200 -c 100 http://www.baidu.com/