VS+Qt+C++ Yolov8物体识别窗体程序onnx模型

程序示例精选
VS+Qt+C++ Yolov8物体识别窗体程序onnx模型
如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!

前言

这篇博客针对《VS+Qt+C++ Yolov8物体识别窗体程序onnx模型》编写代码,代码整洁,规则,易读。 学习与应用推荐首选。


运行结果

在这里插入图片描述


文章目录

一、所需工具软件
二、使用步骤
       1. 主要代码
       2. 运行结果
三、在线协助

一、所需工具软件

       1. VS2019, Qt
       2. C++,Yolov8

二、使用步骤

代码如下(示例):

#include<math.h>
#include "yolov8_onnx.h"
#include<time.h>
using namespace dnn;template<typename _Tp>int yolov8_onnx(_Tp& cls, Mat& img, string& model_path)
{//cout << "test00" << endl;if (cls.ReadModel(model_path, false)) {cout << "read net ok!" << endl;}else {return -1;}vector<Scalar> color;srand(time(0));for (int i = 0; i < 80; i++) {int b = rand() % 256;int g = rand() % 256;int r = rand() % 256;//color.push_back(Scalar(b, g, r));color.push_back(Scalar(255, 0, 255));}if (cls.OnnxDetect(img, result)) {//cout << "test5" << endl;DrawPred(img,cls._className, color);}else {cout << "Detect Failed!" << endl;}//system("pause");//return 0;
}mainWindow::mainWindow(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);QObject::connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(onCamera()));QObject::connect(ui.pushButton_2, SIGNAL(clicked()), this, SLOT(onVideo()));static void sleep(int msec)
{QTime dieTime = QTime::currentTime().addMSecs(msec);while (QTime::currentTime() < dieTime)QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
void mainWindow::onCamera()
{std::cout << "test_ " << std::endl;cout << "aa" << endl;VideoCapture capture(0);while (1) {Mat frame;capture >> frame;if (frame.empty()) break;ui.label->clear();cvtColor(frame, frame, COLOR_RGB2BGR);QImage img = QImage((const unsigned char*)(frame.data), ui.label->setPixmap(QPixmap::fromImage(img));ui.label->update();}
}
void mainWindow::onVideo()
{std::cout << "test_ " << std::endl;cout << "aa" << endl;QString filePath = QFileDialog::getOpenFileName(this, tr("Open"));if (filePath.isEmpty()) {qDebug() << "Select nothing";return;}QTextCodec* codec = QTextCodec::codecForName("UTF-8");std::string imagePath = codec->fromUnicode(filePath).data();std::cout << imagePath << std::endl;VideoCapture capture(imagePath);capture.open(imagePath);if (!capture.isOpened()){cout << "could not load video..." << endl;}while (1) {Mat frame;capture >> frame;if (frame.empty()) break;ui.label->clear();cvtColor(frame, frame, COLOR_RGB2BGR);QImage img = QImage((const unsigned char*)(frame.data), ui.label->setPixmap(QPixmap::fromImage(img));ui.label->update();sleep(30); }
}
void mainWindow::onRecogn()
{//string img_path = "./data/image/aa.png";//string detect_model_path = "yolov8n.onnx";//Mat img = imread(img_path);//Yolov8Onnx task_detect_onnx;//yolov8_onnx(task_detect_onnx, img, detect_model_path);  //onnxruntime detect//return 0;Mat img;img = capture.open("aa.mp4");QStringList nameList;QStringList countList;while (capture.read(img))//cout << "test" << endl;Yolov8Onnx task_detect_onnx;yolov8_onnx(task_detect_onnx, img, detect_model_path);  //onnxruntime detect//imshow("output", img);//waitKey(10);extern Mat imgT;//cout << "imgT" << imgT << endl;ui.label->clear();cvtColor(imgT, imgT, COLOR_RGB2BGR);QImage img = QImage((const unsigned char*)(imgT.data), imgT.cols, imgT.rows, imgT.cols * imgT.channels(), QImage::Format_RGB888);img = img.scaled(600, 500, Qt::KeepAspectRatio); ui.label->setPixmap(QPixmap::fromImage(img));ui.label->update();QSqlDatabase db;db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("information.db");if (!db.open()) {qDebug() << "";//qDebug() << "open error" << db.lastError();}QSqlQuery query;QString sqlSelect = "SELECT name, count FROM informationTable";if (query.exec(sqlSelect)) {while (query.next()) {QString name = query.value(0).toString();QString count = query.value(1).toString();nameList.append(name);countList.append(count);}}else {qDebug() << "Query failed";}// 一次性显示到 UIfor (int i = 0; i < nameList.size(); i++) {ui.textEdit->append(nameList[i] + ": " + countList[i]);}db.close();sleep(30);  //nameList.clear();//countList.clear();capture.release();
}
void mainWindow::testT() {QString nameEd = QString::fromStdString("person");//将信息写入数据库QSqlDatabase db;db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("information.db");// 2. 打开数据库if (!db.open()) {qDebug() << "";//qDebug() << "open error" << db.lastError();}QSqlQuery query;//QString sqlInert = QString("insert into informationTable(name,count)" "values('%1', '%2')").arg(nameEd).arg(countEd);//if (!query.exec(sqlInert))//	qDebug() << "insert data error" << db.lastError();// 检查数据库中是否存在nameEdQString checkExistQuery = QString("SELECT COUNT(*) FROM informationTable WHERE name = '%1'").arg(nameEd);QSqlQuery existQuery(checkExistQuery);if (existQuery.exec() && existQuery.next()) {int count = existQuery.value(0).toInt();if (count > 0) {qDebug() << "count" << count;// 如果存在,则执行更新操作}else {qDebug() << "no exists";// 如果不存在,则执行插入操作}}else {qDebug() << "Check existence query failed";}
}
运行结果

在这里插入图片描述

三、在线协助:

如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助!

1)远程安装运行环境,代码调试
2)Visual Studio, Qt, C++, Python编程语言入门指导
3)界面美化
4)软件制作
5)云服务器申请
6)网站制作

当前文章连接:https://blog.csdn.net/alicema1111/article/details/132666851
个人博客主页:https://blog.csdn.net/alicema1111?type=blog
博主所有文章点这里:https://blog.csdn.net/alicema1111?type=blog

博主推荐:
Python人脸识别考勤打卡系统:
https://blog.csdn.net/alicema1111/article/details/133434445
Python果树水果识别:https://blog.csdn.net/alicema1111/article/details/130862842
Python+Yolov8+Deepsort入口人流量统计:https://blog.csdn.net/alicema1111/article/details/130454430
Python+Qt人脸识别门禁管理系统:https://blog.csdn.net/alicema1111/article/details/130353433
Python+Qt指纹录入识别考勤系统:https://blog.csdn.net/alicema1111/article/details/129338432
Python Yolov5火焰烟雾识别源码分享:https://blog.csdn.net/alicema1111/article/details/128420453
Python+Yolov8路面桥梁墙体裂缝识别:https://blog.csdn.net/alicema1111/article/details/133434445

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

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

相关文章

Spring接入Metric+Graphite+Grafana搭建监控系统

环境搭建 Metric 主要是记录操作记录&#xff0c;把数据传给Graphite&#xff0c;这个只需要引入依赖就可以了 日志收集系统&#xff0c;可以支持很多的监控系统一般在Spring项目中用其收集数据&#xff0c;可以发送到Graphite等监控系统中一般使用Merter和Timer分别记录成功…

多目标应用:基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度(MATLAB)

一、微网系统运行优化模型 微电网优化模型介绍&#xff1a; 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、基于非支配排序的蜣螂优化算法NSDBO 基于非支配排序的蜣螂优化算法NSDBO简介&#xff1a; https://blog.csdn.net/weixin46204734/article/details/128…

HTTPS流量抓包分析中出现无法加载key

HTTPS流量抓包分析(TLSv1.2)&#xff0c;这篇文章分析的比较透彻&#xff0c;就不班门弄斧了 https://zhuanlan.zhihu.com/p/635420027 写个小问题&#xff1a;RSA密钥对话框加载rsa key文件的时候注意不要在中文目录下&#xff0c;否则会提示&#xff1a;“Enter the passwor…

IDEA自动注解设置(中文版)

IDEA自动注解设置 1、添加类自动注释 文件 - 设置 - 编辑器 - 文件和代码模板 - Include - File Header /** *description&#xff1a;TODO *author&#xff1a; ${USER} *create&#xff1a; ${DATE} ${TIME} */2、添加类方法自动注释 文件 - 设置 - 编辑器 - 实时模版 - …

米哈游大数据云原生实践

云布道师 近年来&#xff0c;容器、微服务、Kubernetes 等各项云原生技术的日渐成熟&#xff0c;越来越多的公司开始选择拥抱云原生&#xff0c;并将企业应用部署运行在云原生之上。随着米哈游业务的高速发展&#xff0c;大数据离线数据存储量和计算任务量增长迅速&#xff0c…

【剑指offer|图解|链表】链表的中间结点 + 链表中倒数第k个结点

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、算法模板 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️链表的中间结点二. ⛳️链表中倒数第k个结点&#x1f4dd;结语 &#x1f4c…

数据结构及八种常用数据结构简介

data-structure 数据结构是一种存在某种关系的元素的集合。“数据” 是指元素&#xff1b;“结构” 是指元素之间存在的关系&#xff0c;分为 “逻辑结构” 和 “物理结构&#xff08;又称存储结构&#xff09;”。 常用的数据结构有 数组&#xff08;array&#xff09;、栈&…

C语言童年生活二三事(ZZULIOJ1091:童年生活二三事(多实例测试))

题目描述 Redraiment小时候走路喜欢蹦蹦跳跳&#xff0c;他最喜欢在楼梯上跳来跳去。 但年幼的他一次只能走上一阶或者一下子蹦上两阶。 现在一共有N阶台阶&#xff0c;请你计算一下Redraiment从第0阶到第N阶共有几种走法。 输入&#xff1a;输入包括多组数据。 每组数据包括一…

selenium下载安装对应的chromedriver并执行

文章目录 selenium对应版本chrome驱动下载114以及之前的chrome版本119/120/121的chrome版本 chromedriver安装执行selenium代码 selenium Selenium是广泛使用的模拟浏览器运行的库&#xff0c;它是一个用于Web应用程序测试的工具。 Selenium测试直接运行在浏览器中&#xff0c…

图片降噪软件 Topaz DeNoise AI mac中文版功能

Topaz DeNoise AI for Mac是一款专业的Mac图片降噪软件。如果你有噪点的相片&#xff0c;可以通过AI智能的方式来处理掉噪点&#xff0c;让照片的噪点降到最 低。有了Topaz DeNoise AI mac版处理图片更方便&#xff0c;更简单。 Topaz DeNoise AI mac软件功能 无任何预约即可在…

Linux进程通信——消息队列

概念 消息队列&#xff0c;是消息的链接表&#xff0c;存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。 特点 1.消息队列是面向记录的&#xff0c;其中的消息具有特定的格式以及特定的优先级。&#xff08;消息队列是结构体&#xff09; 2.消息队列独立于发送与接…

【数据结构】栈详解

目录 1. 前言2. 栈2.1 栈的概念及结构2.2 如何实现栈2.3 数组栈实现2.3.1 top怎么确定2.3.2 栈顶插入2.3.2.1 栈顶插入分析2.3.2.2 栈顶插入代码实现 2.3.3 栈顶删除2.3.4 判空2.3.4.1 分析2.3.4.2 代码实现 2.3.5 栈的元素个数2.3.6 栈销毁2.3.7 栈访问数据 3. 源代码3.1 Stac…

从零开始的C++(十八)

avl树中insert的模拟实现 avl树特点&#xff1a; 1.是搜索二叉树 2.每个结点的左右子树高度差的绝对值不超过2 inser模拟实现&#xff1a; // 右单旋void RotateR(Node* pParent){Node* parent pParent;Node* pr parent->_pRight;Node* prl pr->_pLeft;//记录父节点…

【设计模式】结构型设计模式

结构型设计模式 文章目录 结构型设计模式一、概述二、适配器模式&#xff08;Adapter Pattern&#xff09;2.1 类适配器模式2.2 对象适配器模式2.3 接口适配器模式2.4 小结 三、桥接模式&#xff08;Bridge Pattern&#xff09;四、装饰器模式&#xff08;Decorator Pattern&am…

2 Redis的高级数据结构

1、Bitmaps 首先&#xff0c;最经典的应用场景就是用户日活的统计&#xff0c;比如说签到等。 字段串&#xff1a;“dbydc”&#xff0c;根据对应的ASCII表&#xff0c;最后可以得到对应的二进制&#xff0c;如图所示 一个字符占8位&#xff08;bit&#xff09;&#xff0c;…

操作系统基础操作

操作系统的启动 体系结构概念 CPU、I/O、内存-通过总线连接 操作系统一开始存放时没有放在内存里&#xff0c;而是当在DISK中&#xff0c;由BIOS提供相应支持 DISK&#xff1a;存放OSBIOS&#xff1a;基本I/O处理系统&#xff08;计算机开机时可以让系统检测各种外设&#…

idea 环境搭建及运行java后端源码

1、 idea 历史版本下载及安装 建议下载和我一样的版本&#xff0c;2020.3 https://www.jetbrains.com/idea/download/other.html&#xff0c;idea分为专业版本&#xff08;Ultimate&#xff09;和社区版本&#xff08;Community&#xff09;&#xff0c;前期可以下载专业版本…

“开源 vs. 闭源:大模型的未来发展趋势预测“——探讨大模型未来的发展方向

文章目录 每日一句正能量前言什么是大模型的开源与闭源开源与闭源的定义和特点开源的意义开源和闭源的优劣势比较不同的大模型企业&#xff0c;开源、闭源的策略不尽相同。企业在开发垂类模型时选择开源还是闭源大模型开源vs 闭源&#xff1a;两者并非选择题后记 每日一句正能量…

多模态大模型训练数据集汇总介绍

RefCOCO、RefCOCO、RefCOCOg 这三个是从MS-COCO中选取图像得到的数据集&#xff0c;数据集中对所有的 phrase 都有 bbox 的标注。 RefCOCO 共有19,994幅图像&#xff0c;包含142,209个引用表达式&#xff0c;包含50,000个对象实例。RefCOCO 共有19,992幅图像&#xff0c;包含1…

【开源】基于Vue和SpringBoot的中小学教师课程排课系统

项目编号&#xff1a; S 053 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S053&#xff0c;文末获取源码。} 项目编号&#xff1a;S053&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 角色管理模块2.2 课程档案模块2.3 排…