当前位置:网站首页>基于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();
}
边栏推荐
- PHP constructor with parameters - PHP constructor with a parameter
- The core idea of performance optimization, dry goods sharing
- A2L file parsing based on CAN bus (2)
- Two dimensional format array format index subscript continuity problem leads to return JSON format problem
- 一文带你了解 ZigBee
- Xiaodi notes
- Didi programmers are despised by relatives: an annual salary of 800000 is not as good as two teachers
- 迅雷chrome扩展插件造成服务器返回的数据js解析页面数据异常
- HTB-Devel
- The base value is too large (the error is marked as "08") [duplicate] - value too great for base (error token is'08') [duplicate]
猜你喜欢

What is the way out for children from poor families?

Yiwen takes you to know ZigBee

Segmentation fault occurs during VFORK execution
![MySQL Real combat 45 [SQL query and Update Execution Process]](/img/cd/3a635f0c3bb4ac3c8241cb77285cc8.png)
MySQL Real combat 45 [SQL query and Update Execution Process]

Opengauss database development and debugging tool guide

Sous - système I2C (IV): débogage I2C

用docker 連接mysql的過程

Three. JS local environment setup

Installation and use of memory leak tool VLD

Check log4j problems using stain analysis
随机推荐
从输入URL到页面展示这中间发生了什么?
超好用的日志库 logzero
I2C subsystem (III): I2C driver
The difference between componentscan and componentscans
敏捷认证(Professional Scrum Master)模拟练习题-2
Docker install MySQL
I2C 子系统(三):I2C Driver
What is the way out for children from poor families?
About HTTP cache control
Parameter index out of range (1 > number of parameters, which is 0)
I2C 子系统(二):I3C spec
Can netstat still play like this?
Practice of traffic recording and playback in vivo
Add automatic model generation function to hade
Segmentation fault occurs during VFORK execution
Your family must be very poor if you fight like this!
[C language] MD5 encryption for account password
C language beginner level - pointer explanation - paoding jieniu chapter
Kubernetes cluster log and efk architecture log scheme
Getting started | jetpack hilt dependency injection framework