当前位置:网站首页>QT based tensorrt accelerated yolov5
QT based tensorrt accelerated yolov5
2022-07-03 03:09:00 【AphilGuo】
Personal records
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, " Select Picture ", 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, " Tips ", " Start detection ");
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();
}
边栏推荐
- Docker install MySQL
- 左值右指解释的比较好的
- MySQL practice 45 lecture [transaction isolation]
- Practice of traffic recording and playback in vivo
- VS code配置虚拟环境
- MySql实战45讲【事务隔离】
- 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
- Deep Reinforcement Learning for Intelligent Transportation Systems: A Survey 论文阅读笔记
- About HTTP cache control
- Spark on yarn资源优化思路笔记
猜你喜欢

I2C subsystem (II): I3C spec

Privatization lightweight continuous integration deployment scheme -- 01 environment configuration (Part 2)

I2C 子系統(四):I2C debug

The idea cannot be loaded, and the market solution can be applied (pro test)

Add automatic model generation function to hade

Spark on yarn resource optimization ideas notes

I2C 子系统(二):I3C spec
![MySQL practice 45 lecture [row lock]](/img/71/344daddee537a96f0d38241e6896e1.png)
MySQL practice 45 lecture [row lock]

Creation and destruction of function stack frame
![ASP. Net core 6 framework unveiling example demonstration [02]: application development based on routing, MVC and grpc](/img/cb/145937a27ef08050a370d5a255215a.jpg)
ASP. Net core 6 framework unveiling example demonstration [02]: application development based on routing, MVC and grpc
随机推荐
Creation and destruction of function stack frame
The difference between componentscan and componentscans
当lambda没有输入时,是何含义?
内存泄漏工具VLD安装及使用
How to select the minimum and maximum values of columns in the data table- How to select min and max values of a column in a datatable?
Concrete CMS vulnerability
What is the way out for children from poor families?
Kubernetes family container housekeeper pod online Q & A?
用docker 連接mysql的過程
Super easy to use logzero
MySQL practice 45 [global lock and table lock]
[leectode 2022.2.15] lucky numbers in the matrix
Kubernetes family container housekeeper pod online Q & A?
Sous - système I2C (IV): débogage I2C
敏捷认证(Professional Scrum Master)模拟练习题-2
[combinatorics] Application of exponential generating function (multiple set arrangement problem | different balls in different boxes | derivation of exponential generating function of odd / even sequ
How to return ordered keys after counter counts the quantity
Didi programmers are despised by relatives: an annual salary of 800000 is not as good as two teachers
Last update time of all sqlserver tables
I2C subsystem (IV): I2C debug