当前位置:网站首页>基于QT的tensorRT加速的yolov5
基于QT的tensorRT加速的yolov5
2022-07-03 03:06:00 【AphilGuo】
个人记录
yolov5Detection.h
#pragma once
#pragma execution_character_set("utf-8")
#include <QtWidgets/QMainWindow>
#include <opencv2/opencv.hpp>
#include "ui_Yolov5Detection.h"
#include <QLabel>
class Yolov5Detection : public QMainWindow
{
Q_OBJECT
public:
Yolov5Detection(QWidget *parent = Q_NULLPTR);
// ~Yolov5Detection();
void ShowImage(QImage& src);
QImage MatToImage(cv::Mat& image);
void YoloDetect(cv::Mat& image);
private:
Ui::Yolov5DetectionClass ui;
cv::Mat img;
cv::Mat c_img;
cv::Mat* temp_img;
QImage src;
QLabel* label;
int click_num=0;
int close_num = 0;
// cv::VideoCapture* capture;
private slots:
void on_OpenImagePushButton_clicked();
void on_DetectPushButton_clicked();
void on_OpenCamPushButton_clicked();
void on_ExitPushButton_clicked();
};
yolov5Detection.cpp
#include "Yolov5Detection.h"
#include <QFileDialog>
#include <QDir>
#include <QPixmap>
#include <QByteArray>
#include <QMessageBox>
#include <QLabel>
#include "Detection.h"
#include "yololayer.h"
#include <opencv2/dnn.hpp>
Yolov5Detection::Yolov5Detection(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
}
void Yolov5Detection::ShowImage(QImage& src)
{
label = new QLabel;
label->setPixmap(QPixmap::fromImage(src));
ui.ShowImageScrollArea->setWidget(label);
}
QImage Yolov5Detection::MatToImage(cv::Mat& img)
{
QImage new_img((uchar*)img.data, img.cols, img.rows, img.cols * 3, QImage::Format_BGR888);
return new_img;
}
void Yolov5Detection::on_OpenImagePushButton_clicked()
{
close_num = 1;
auto strPath = QFileDialog::getOpenFileName(nullptr, "选择图片", QDir::homePath(), "Images (*.jpg *.jpeg *png *bmp)");
this->src.load(strPath);
ShowImage(src);
cv::String imgPath = strPath.toStdString();
img = cv::imread(imgPath);
c_img = img.clone();
click_num = 0;
}
void Yolov5Detection::YoloDetect(cv::Mat& image)
{
Connect connect;
YOLOV5* yolo = connect.Create_YOLOV5_Object();
std::vector<cv::Rect> Boxes;
std::vector<const char*> ClassLables;
yolo->Initialize("./yolov5.engine", 0);
yolo->Detecting(image, Boxes, ClassLables);
connect.Delete_YOLOV5_Object(yolo);
}
void Yolov5Detection::on_DetectPushButton_clicked()
{
temp_img = new cv::Mat();
temp_img = &c_img;
QMessageBox::information(nullptr, "提示", "开始检测");
YoloDetect(*temp_img);
QImage temp = MatToImage(*temp_img);
ShowImage(temp);
click_num = 1;
}
void Yolov5Detection::on_OpenCamPushButton_clicked()
{
close_num = 0;
cv::VideoCapture capture;
capture.open(0);
while(true)
{
cv::Mat frame;
capture >> frame;
c_img = frame;
if (click_num%2==1)
YoloDetect(frame);
QImage temp = MatToImage(frame);
ShowImage(temp);
cv::waitKey(10);
if (close_num == 1)
break;
}
capture.release();
cv::destroyAllWindows();
}
void Yolov5Detection::on_ExitPushButton_clicked()
{
close_num = 1;
QWidget::close();
}
边栏推荐
- Deep reinforcement learning for intelligent transportation systems: a survey paper reading notes
- Force freeing memory in PHP
- I2C 子系统(三):I2C Driver
- ASP. Net core 6 framework unveiling example demonstration [02]: application development based on routing, MVC and grpc
- Serious security vulnerabilities reported by moxa mxview network management software
- Sqlserver row to column pivot
- ComponentScan和ComponentScans的区别
- 复选框的使用:全选,全不选,选一部分
- [shutter] monitor the transparency gradient of the scrolling action control component (remove the blank of the top status bar | frame layout component | transparency component | monitor the scrolling
- SQL Server Query spécifie la structure de la table
猜你喜欢

Deep learning: multi-layer perceptron and XOR problem (pytoch Implementation)

TCP handshake three times and wave four times. Why does TCP need handshake three times and wave four times? TCP connection establishes a failure processing mechanism

Kubernetes cluster log and efk architecture log scheme

Joking about Domain Driven Design (III) -- Dilemma
![MySQL practice 45 [SQL query and update execution process]](/img/cd/3a635f0c3bb4ac3c8241cb77285cc8.png)
MySQL practice 45 [SQL query and update execution process]

迅雷chrome扩展插件造成服务器返回的数据js解析页面数据异常

I2C 子系统(二):I3C spec

docker安装mysql

Add some hard dishes to the interview: how to improve throughput and timeliness in delayed task scenarios!

I2C 子系统(四):I2C debug
随机推荐
MySql实战45讲【全局锁和表锁】
Kubernetes family container housekeeper pod online Q & A?
Agile certification (professional scrum Master) simulation exercise-2
Do you really understand relays?
tensor中的append应该如何实现
Check log4j problems using stain analysis
SQL server queries the table structure of the specified table
Docker install redis
The difference between componentscan and componentscans
idea 加载不了应用市场解决办法(亲测)
How to make backgroundworker return an object
How to implement append in tensor
Add automatic model generation function to hade
Cron表达式介绍
MySql实战45讲【索引】
I2C subsystem (III): I2C driver
敏捷认证(Professional Scrum Master)模拟练习题-2
As a leader, how to control the code version and demand development when the epidemic comes| Community essay solicitation
Distributed transaction
Variable declarations following if statements