【边缘智能】Jetson板卡上安装QT5与OpenCV集成

学习《OpenCV应用开发:入门、进阶与工程化实践》一书
做真正的OpenCV开发者,从入门到入职,一步到位!

安装QT5与QT Creator

如果只是简单的使用QT的GUI库,没有其它要求,其实特别容易,一行命令行可以搞定了,直接在终端运行:

sudo apt-get install qt5-default qtcreator –y

安装完成以后,去左下角的软件安装中心点开,鼠标往下滚就可以看到:
在这里插入图片描述

OpenCV支持配置

在这里插入图片描述
创建一个QT Widget Application类型的项目,然后右键选择该项目,选择导入第三方库的方式来导入OpenCV支持。默认情况下Jetpack系统是已经自带OpenCV库的,但是不支持CUDA,所以我自己编译了OpenCV4.8 + CUDA支持版本。
如何给Jetson Orin Nano的ubuntu port换镜像源
其中包含路径如下:

/usr/include/opencv4

so文件库路径如下

/usr/lib/aarch64-linux-gnu

分别选择好以后,按OK就可以完成OpenCV集成配置支持的第一步,然后再按我这样,手动修改
在这里插入图片描述
这样就配置好了OpenCV支持了。

QT+OpenCV代码测试

双击打开mainwindow.cpp文件,在里面添加代码如图所示:
在这里插入图片描述
检查一下是否有跟我一样的图像文件,改一下文件路径,源代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "opencv2/opencv.hpp"
#include "QLabel"
#include "QVBoxLayout"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// add more codes from here~~~cv::Mat bgr = cv::imread("/home/orinnano/Pictures/lena.jpg");cv::Mat image;cv::cvtColor(bgr, image, cv::COLOR_BGR2RGB);QImage img = QImage(image.data, image.cols, image.rows, image.step, QImage::Format_RGB888);img = img.scaled(QSize(800, 600), Qt::KeepAspectRatio);QPixmap mp;mp = mp.fromImage(img);QLabel *label = new QLabel();label->setAlignment(Qt::AlignCenter);label->setPixmap(mp);QVBoxLayout *vblayout = new QVBoxLayout();vblayout->addWidget(label);ui->centralwidget->setLayout(vblayout);this->setWindowTitle("Jetson Orin Nano + Qt5 + OpenCV4.8 Demo");
}MainWindow::~MainWindow()
{delete ui;
}

运行结果:
在这里插入图片描述
后记:
我知道网上还有很多这类文章,但是它们有一个共同的问题,根本就没有集成QT界面跟OpenCV在一起,而且基于Qt Creator通过控制台运行一下拉到了。因而误导了不少人,也让很多人根本就不知道怎么集成这两个东西,所以我才写了这篇文章,帮助大家正本清源!

学习《OpenCV应用开发:入门、进阶与工程化实践》一书
做真正的OpenCV开发者,从入门到入职,一步到位!

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

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

相关文章

Flutter-底部弹出框(Widget层级)

需求 支持底部弹出对话框。支持手势滑动关闭。支持在widget中嵌入引用。支持底部弹出框弹出后不影响其他操作。支持弹出框中内容固定头部和下面列表时,支持触摸头部并在列表不在头部的时候支持滑动关闭 简述 通过上面的需求可知,就是在界面中可以支持…

最细致最简单的 Arm 架构搭建 Harbor

更好的阅读体验:点这里 ( www.doubibiji.com ) ARM离线版本安装 官方提供了一个 arm 版本,但是好久都没更新了,地址:https://github.com/goharbor/harbor-arm 。 也不知道为什么不更新,我看…

CTF题型 SSTI(1) Flask-SSTI-labs 通关 题记

CTF题型 SSTI(1) Flask-SSTI-labs 通关 题记 文章目录 CTF题型 SSTI(1) Flask-SSTI-labs 通关 题记前记获取键值或下标的方式获取属性的方式 Level 1 no wafLevel 2 bl[\{\{]Level 3 no waf and blindLevel 4 bl[[, ]]获取键值或下标 Level 5 bl[\, "]Level 6 bl[_]Level …

Redis 过期删除策略和内存淘汰策略有什么区别?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) Redis 的「内存淘汰策略」和「过期删除策略」,很多小伙伴容易混淆,这两个机制虽然都是做删除的操作,但是触发的条件和使用的策略都是不同的。 今天就跟大家理一理&…

webpack5零基础入门-11处理html资源

1.目的 主要是为了自动引入打包后的js与css资源,避免手动引入 2.安装相关包 npm install --save-dev html-webpack-plugin 3.引入插件 const HtmlWebpackPlugin require(html-webpack-plugin); 4.添加插件(通过new方法调用) /**插件 *…

【AAAI 2024】MuLTI:高效视频与语言理解

一、背景 1.1 多模态的发展 多模态理解模型具有广泛的应用,比如多标签分类(Classification)、视频问答(videoQA)和文本视频检索(Retrieval)等。现有的方法已经在视频和语言理解方面取得了重大…

从零开始学习深度学习库-4:自动微分

欢迎来到本系列的第四部分,在这里我们将讨论自动微分 介绍 自动微分(Automatic Differentiation,简称AD)是一种计算数学函数导数(梯度)的技术。在深度学习和其他领域中,自动微分是一种极其重要…

Ubuntu 搭建gitlab服务器,及使用repo管理

一、GitLab安装与配置 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 1、安装Ubuntu系统(这个教程很多,就不展开了)。 2、安装gitlab社区版本,有需…

二、SQL基础学习(函数、约束、事务)

目录 1、函数1.1、字符串函数1.2、数值函数1.3、日期函数1.4 、流程函数 2、约束2.1、外键约束2.2、删除/更新行为 3、事务3.1、事务的四大特性3.2、并发事务问题3.2、事务的隔离级别 1、函数 1.1、字符串函数 # concat select concat(Hello, MySql);# lower select lower(He…

Linux操作系统的安全相关介绍

Linux操作系统的安全模型、访问控制、安全策略和加密机制是确保系统安全的重要组成部分。下面将详细介绍这些方面。 安全模型 Linux操作系统的安全模型基于传统的Unix安全模型,主要包括以下核心概念: 1. **用户和组**:Linux系统中的每…

外贸网站文章批量生成器

随着全球贸易的不断发展,越来越多的企业开始关注外贸市场,而拥有高质量的内容是吸引潜在客户的关键之一。然而,为外贸网站生产大量优质的文章内容可能是一项耗时且繁琐的任务。因此,外贸网站文章批量生成软件成为了解决这一难题的…

elk收集k8s微服务日志

一、前言 使用filebeat自动发现收集k8s的pod日志,这里分别收集前端的nginx日志,还有后端的服务java日志,所有格式都是用json格式,建议还是需要让开发人员去输出java的日志为json,logstash分割java日志为json格式&#…