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.hqwc.cn/news/191341.html

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

相关文章

Leetcode—206.反转链表【简单】

2023每日刷题&#xff08;三十三&#xff09; Leetcode—206.反转链表 头插法实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* reverseList(struct ListNode* head) {if(head NULL…

如何去掉照片中多余路人?一分钟帮你搞定

在外出拍照时&#xff0c;可能会遇到一些不希望出现在照片中的路人&#xff0c;比如在旅游景点、公共场所或者街头拍摄时突然闯入镜头的人。这些路人的出现可能会破坏照片的整体氛围&#xff0c;影响照片的美观度。因此&#xff0c;需要使用一些方法去掉这些多余的路人&#xf…

[C国演义] 哈希的使用和开闭散列的模拟实现

哈希的使用和开闭散列的模拟实现 1. 使用1.1 unordered_map的接口1.2 unordered_set的接口 2. 哈希底层2.1 概念2.2 解决哈希冲突 3. 实现3.1 开放寻址法3.2 拉链法 1. 使用 1.1 unordered_map的接口 构造 void test1() {// 空的unordered_map对象unordered_map<int, in…

向pycdc项目提的一个pr

向pycdc项目提的一个pr 前言 pycdc这个项目&#xff0c;我之前一直有在关注&#xff0c;之前使用他反编译python3.10项目&#xff0c;之前使用的 uncompyle6无法反编译pyhton3.10生成的pyc文件&#xff0c;但是pycdc可以&#xff0c;但是反编译效果感觉不如uncompyle6。但是版…

Docker入门学习笔记

学习笔记网址推送&#xff1a;wDocker 10分钟快速入门_哔哩哔哩_bilibili docker是用来解决什么问题的&#xff1f; 例如当你在本地主机写了个web应用&#xff0c;而你打算将该应用发送给其他客户端进行案例测试和运行&#xff0c;若是传统做法&#xff0c;就比较复杂&#xf…

基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制(11.17,PWM控制与状态切换)

1.今天做了什么 2.过程思路 看了两天文档才慢慢看懂&#xff0c;有点满了 现在接着前一天的思路&#xff0c;可以通过代码来控制pwm的占空比。我这里采用的是TP0定时器 初步控制pwm的占空比 void LED_PWM_OPEN(void) {//占空比 PWM1-Y-PB2PWM1DH 0X0F;PWM1DL 0X00; //占…

基于 gin + websocket 即时通讯项目 (一、项目初始化)

基于 gin websocket 即时通讯项目 1、安装环境与初始化 搜索各种包官网 https://pkg.go.dev/ 1.1 安装 grom go get -u gorm.io/grom 1.2 安装 MySQL 驱动 go get -u gorm.io/driver/sqlite go get -u gorm.io/driver/mysql 1.3 安装 gin go get -u github.com/gin-gonic/gi…

​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第12章 信息系统架构设计理论与实践&#xff08;P420~465&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图

代码随想录算法训练营第三十九天【动态规划part02】 | 62.不同路径、63. 不同路径 II

62.不同路径 题目链接&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 求解思路&#xff1a; 动规五部曲 确定dp数组及其下标含义&#xff1a;dp[i][j] 表示从&#xff08;0,0&#xff09;出发&#xff0c;到&#xff08;i,j&#x…

课程设计(毕业设计)—基于机器学习(CNN+opencv+python)的车牌识别—(可远程调试)计算机专业课程设计(毕业设计)

基于机器学习(CNNopencvpython)的车牌识别 下载本文机器学习(CNNopencvpython)的车牌识别系统完整的代码和参考报告链接&#xff08;或者可以联系博主koukou(壹壹23七2五六98)&#xff0c;获取源码和报告&#xff09;https://download.csdn.net/download/shooter7/88548767此处…

腾讯云服务器租用价格,腾讯云服务器价格流量怎么算?

首先&#xff0c;让我们来看看腾讯云服务器租用价格。根据您的需求不同&#xff0c;腾讯云提供了多种不同的配置选项&#xff0c;从轻量级应用服务器到高性能的GPU服务器&#xff0c;都可以满足您的需求。以下是一些常见的腾讯云服务器租用价格&#xff1a; 一、腾讯云服务器租…

代码随想录 Day49 单调栈01 LeetCode LeetCodeT739每日温度 T496 下一个最大元素I

前言 折磨的死去活来的动态规划终于结束啦,今天秋秋给大家带来两题非常经典的单调栈问题,可能你不清楚单调栈是什么,可以用来解决什么问题,今天我们就来一步一步的逐渐了解单调栈,到能够灵活使用单调栈.注意以下讲解中&#xff0c;顺序的描述为 从栈头到栈底的顺序 什么时候用单…