一、编译x86-64平台的opencv demo

紧接上一篇,我电脑里现在同时存在两个版本的opencv库,一个是基于x86-64平台的3.4.11库,一个是基于arm平台的4.7.0库,现在我正常运行opencv的demo,直接报错:没有找到oencv4.7.0的库,这是因为之前编译arm架构的opencv 4.7.0的库时,在/usr/local/lib下生成了4.7.0版本的cmake文件夹,而opencv的demo下的CMakeisets.txt里的语句:find_package(OpenCV REQUIRED)会搜索当前opencv目录下的.cmake文件,cmake文件夹下存在该文件:

这里要做的就是把/uar/local/lib下的cmake文件夹删除即可。

find_package()的具体搜索方法见以下链接:

【CMake】find_package介绍-定位外部依赖_findpackage config模式-CSDN博客

 常规的opencv demo对应的CMakeLIsts.txt语句:

cmake_minimum_required( VERSION 3.1 )# 声明一个 cmake 工程
project( main )# 设置编译模式
set( CMAKE_BUILD_TYPE "Release" )#添加OPENCV库
#指定OpenCV版本,代码如下
#find_package(OpenCV 3.3 REQUIRED)
#如果不需要指定OpenCV版本,代码如下
find_package(OpenCV REQUIRED)#添加OpenCV头文件
include_directories(${OpenCV_INCLUDE_DIRS})#显示OpenCV_INCLUDE_DIRS的值
#message(${OpenCV_INCLUDE_DIRS})# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable( main main.cpp )# 将库文件链接到可执行程序上
target_link_libraries( main  ${OpenCV_LIBS})install(TARGETS main DESTINATION /home/user)

二、编译arm版本的qt

具体的编译方法建议下链接:

为RK3568或RK3288开发板创建交叉编译环境{采用amd64的ubuntu系统配置交叉编译arm64开发环境}(保姆级包括安装QT)超详细记录版_rk3568交叉编译工具链-CSDN博客

qt ubuntu 20.04 交叉编译_ubuntu qt交叉编译-CSDN博客

配置好arm编译器后,用qt打开opencv工程,编译一直报opencv函数的错误,这是因为find_package()找不到具体的opencv路径,因为我的opencv不是放在/usr目录下,此时只需要在fina_package()前面加上 :

set(OpenCV_DIR /home/vensin/workspace/623/opencv/opencv-4.7.0/build)

即可编译成功,注意:此时运行qt是无法直接得出结果的,因为在x86-64平台无法运行arm程序。

cmake_minimum_required( VERSION 3.1 )# 声明一个 cmake 工程
project( main )# 设置编译模式
set( CMAKE_BUILD_TYPE "Release" ) #Debug Release#添加OPENCV库
#指定OpenCV版本,代码如下
#find_package(OpenCV 3.3 REQUIRED)
#如果不需要指定OpenCV版本,代码如下
set(OpenCV_DIR /home/vensin/workspace/623/opencv/opencv-4.7.0/build)
find_package(OpenCV REQUIRED)#添加OpenCV头文件
include_directories(${OpenCV_INCLUDE_DIRS})#显示OpenCV_INCLUDE_DIRS的值
#message(${OpenCV_INCLUDE_DIRS})# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable( main main.cpp )# 将库文件链接到可执行程序上
target_link_libraries( main  ${OpenCV_LIBS})

三、添加设备并调试

具体添加相机设备的方法如下:

3:Ubuntu上配置QT交叉编译环境并编译QT程序到Jetson Orin Nano(ARM)_ubuntu安装qt jeston orin nano opencv-CSDN博客

这里有几个细节要注意:

1.需要的话要在GDB server executable中加入/usr/bin/gdbserver:

2.必须在CMakeLists.txt 中加入:

install(TARGETS main DESTINATION /home/user)

否则Deploy All Projects会失败(这里的/home/user是rk3568板子上的路径);

3.下图中的Build & Run 、 运行->运行配置等设置如下(mrdvConfig是设备名):

cmake_minimum_required( VERSION 3.1 )# 声明一个 cmake 工程
project( main )# 设置编译模式
set( CMAKE_BUILD_TYPE "Release" ) #Debug Release#添加OPENCV库
#指定OpenCV版本,代码如下
#find_package(OpenCV 3.3 REQUIRED)
#如果不需要指定OpenCV版本,代码如下
set(OpenCV_DIR /home/vensin/workspace/623/opencv/opencv-4.7.0/build)
find_package(OpenCV REQUIRED)#添加OpenCV头文件
include_directories(${OpenCV_INCLUDE_DIRS})#显示OpenCV_INCLUDE_DIRS的值
#message(${OpenCV_INCLUDE_DIRS})# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable( main main.cpp )# 将库文件链接到可执行程序上
target_link_libraries( main  ${OpenCV_LIBS})install(TARGETS main DESTINATION /home/user)

4.这里如果将qt的编译模式修改为Debug则会出现opencv库错误的问题,这是因为之前在编译arm的opencv库的时候选择的是Release模式,所以如果要调试,则需要重新编译一份Debug模式的opencv的arm库。

做完以上步骤以后,运行程序会在板子的指定路径下生成可执行文件。

四、opencv库报错的问题

在用qt编译arm程序时,将qt编译器设置为Debug模式会报libopencv_gapi.so.4.7.0wrong format的错误,我还以为是opencv编译的时候

-D CMAKE_BUILD_TYPE=RELEASE

模式为Release的问题,于是我就把 -D CMAKE_BUILD_TYPE=DEBUG又编译了一遍opencv库,尴尬的是没用,两者编译出来的库是一样的,并没有release和debug的区别,只能继续找问题,既然库没问题,那就看是不是环境变量的问题:

这个LD_LIBRARY_PATH里面加入了当前opencv的include目录和lib,删掉include就可以了(lib后面我也删了)。

五、rk3568平台的远程调试

点击QT的调试,发现报错:

无法对板子程序进行调试。

后续解决办法为:

1.安装gdb-multiarch:

sudo apt-get install gdb-multiarch

2.创建新的Debugger, Path选择/usr/bin/gdb-multiarch,Name设为arm debug:

 arm平台的kits->Debugger选择上文创建的arm debug即可。

接下来调试成功:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/86505.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/86505.shtml
英文地址,请注明出处:http://en.pswp.cn/web/86505.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贪心算法理论与实践总结

文章目录 一、贪心算法的基本概念二、贪心算法的适用条件三、贪心算法的设计步骤四、贪心算法的经典应用场景1. 区间调度问题2. 背包问题3. 最小生成树(MST)4. 单源最短路径(Dijkstra算法)5. 霍夫曼编码6. 零钱兑换 五、贪心算法的…

在 AWS 上重构数据中台,这家出海企业选择了数栈

2024年,袋鼠云接到了一个不小的挑战。 一家货币交易所的技术负责人在通话里直接说:“我们现在业务都跑在 AWS(亚马逊云平台) 上了,你们的产品(数栈大数据平台)能不能不改代码直接跑在 AWS 上&a…

STM32CubeIDE中文注释变乱码终极解决方案:3步设置永久解决锟斤拷问题!

STM32CubeIDE中文注释变乱码终极解决方案:3步设置永久解决锟斤拷问题! 前言简述问题STM32CubeIDE的设置STM32CubeIDE软件的设置当前工程设置 最重要的一环——添加环境变量重要秘方具体做法 前言 你是否在STM32CubeIDE中遇到过这样的崩溃场景&#xff1…

Windows VMWare Centos环境下安装Docker并配置MySql

虚拟机安装 官网下载Centos Stream 10系统镜像 安装了Minimal版,Terminal中粘贴、复制指令不方便,又新建了虚拟机,安装GUI版 终端输入指令报错修复 输入指令报错:failed to set locale defaulting to C.UTF-8,安装语言…

AI能力集成设计与Prompt策略

AI能力集成设计与Prompt策略 在智能客服系统中引入AI能力,必须建立一套架构化、可扩展的AI服务集成体系,并根据不同业务场景制定Prompt策略,从而实现稳定、精准、高效的AI响应能力。 AI能力集成的关键组件设计 AI能力集成架构的核心在于通…

深入剖析 CVE-2021-3560 与 CVE-2021-4034:原理、区别与联系

CVE-2021-3560 和 CVE-2021-4034 是 2021 年曝光的两个 Linux 本地权限提升漏洞,均涉及 Polkit 组件。由于它们影响广泛且利用门槛较低,迅速引起安全社区关注。本文将深入分析这两个漏洞的技术原理、影响范围、区别与联系,并结合实际案例&…

Jupyter Notebook 完全指南:从入门到生产力工具

Jupyter Notebook 完全指南:从入门到生产力工具 Jupyter Notebook 已成为数据科学、机器学习和科研领域的标准工具,它完美结合了代码、文档和可视化功能。本文将带您全面了解 Jupyter 的强大功能,并展示如何将其转化为您的超级生产力工具。 …

HKDF密钥派生原理与应用详解

HKDF(HMAC-Based Key Derivation Function)是一种基于 HMAC(Hash-based Message Authentication Code)的密钥派生函数,用于从原始密钥材料(如共享密钥、随机数等)生成多个加密密钥(如…

SpringBoot + MyBatis 事务管理全解析:从 @Transactional 到 JDBC Connection 的旅程

SpringBoot MyBatis 事务管理全解析:从 Transactional 到 JDBC Connection 的旅程 一、JDBC Connection:事务操作的真正执行者1.1 数据库事务的本质1.2 Spring 与 Connection 的协作流程 二、从 Transactional 到 JDBC Connection 的完整链路2.1 Spring…

Wpf之应用图标的修改!

前言 Wpf之应用图标的修改! 一、修改步骤 1、准备好ico图片。 2、右键项目》点击属性 3、找到win32资源点击 4、点击浏览找到ioc图标 5、点击运行程序 6、右键项目点击打开在资源管理器中打开 找到以下路径 在该路径下能看到.exe文件的图标已经改成你想要的…

Spring Boot整合Redis指南

一、环境准备 在开始整合前&#xff0c;请确保已完成以下准备工作&#xff1a; 已安装Redis服务&#xff08;安装指南&#xff09;创建好Spring Boot项目 二、添加依赖 在项目的pom.xml中添加以下依赖&#xff1a; <!-- Redis核心依赖 --> <dependency><gr…

Re-攻防世界

easyEZbaby_app Jadx 这个文件一般是窗口界面&#xff0c;点击中间的一般就是主函数 Obj1是用户名&#xff0c;obj2是密码 用户名 public boolean checkUsername(String str) { if (str ! null) { try { if (str.length() ! 0 &&…

矩阵题解——搜索二维矩阵 II【LeetCode】

240. 搜索二维矩阵 II 1.1 核心思想 问题描述&#xff1a;给定一个 m x n 的二维矩阵&#xff0c;矩阵的每一行从左到右递增&#xff0c;每一列从上到下递增。判断目标值 target 是否存在于矩阵中。解决思路&#xff1a; 从矩阵的右上角&#xff08;或左下角&#xff09;开始搜…

dockerfile文件详解之基础语法

dockerfile文件详解之基础语法 一般而言 Dockerfile 可以分为4个部分 &#xff08;1&#xff09;基础镜像信息&#xff0c; &#xff08;2&#xff09;维护者信息 &#xff08;3&#xff09;镜像操作命令 &#xff08;4&#xff09;启动时执行指令 1-注释 用 # 来进行注…

WebFuture:独立一级域名nginx取消配置Secure属性的问题

问题分析&#xff1a; 部分站群站点使用了独立一级域名&#xff0c;但是前台问卷调查等模块无法提交&#xff0c;排查是由于主站启用了https&#xff0c;配置了cookies的Secure属性是true&#xff0c;但是子站的独立一级域名没有使用https&#xff0c;所以浏览器不能写入cooki…

【网站内容安全检测】之3:获取所有外部域名访问后图像

Go语言调用Chrome浏览器去进行截图的操作&#xff0c;对电脑的性能要求比较高&#xff0c;所以速度比较有限&#xff0c;但是目前来看这种方式可以最佳的去获取网页加载后的结果。 main.go package mainimport ("context""errors""flag""…

华曦达港股IPO递表,AI Home生态构建智能生活新蓝图

在智能家居逐渐普及的当下&#xff0c;华曦达打造的AI Home生态为用户提供了更智能、便捷的生活解决方案&#xff0c;在行业中展现出独特优势。 华曦达AI Home生态由AI Home系统平台、AI Home基础设施、AI Home设备以及可连接外部设备的开放式设备矩阵构成&#xff0c;是一个开…

java+vue+SpringBoo智慧农业专家远程指导系统(程序+数据库+报告+部署教程+答辩指导)

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿ppt部署教程代码讲解代码时间修改工具 技术实现 开发语言&#xff1a;后端&#xff1a;Java 前端&#xff1a;vue框架&#xff1a;springboot数据库&#xff1a;mysql 开发工具 JDK版本&#xff1a;JDK1.…

免费AI助手工具深度测评:Claude4本地化部署与实战应用指南

免费AI助手工具深度测评&#xff1a;Claude4本地化部署与实战应用指南 AI无限对话免费Rovo工具Claude4碾压cursor和augment 前言 在AI工具日益普及的今天&#xff0c;大多数高质量的AI助手都需要付费订阅或有使用限制。然而&#xff0c;最近发现了一款基于Claude 4的免费AI助手…

MCP浏览器工具:playwright、chrome-mcp

参考&#xff1a; https://github.com/microsoft/playwright-mcp https://github.com/hangwin/mcp-chrome chrome-mcp安装需要额外安装成浏览器插件 用cherrystudio v1.4.5测试 mcp配置&#xff1a; "chrome-mcp-server": {"name": "chrome-mcp-serve…