当前位置:网站首页>基于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();
}
边栏推荐
- Source code analysis | resource loading resources
- 力扣------网格中的最小路径代价
- docker安装mysql
- What does it mean when lambda is not entered?
- Add automatic model generation function to hade
- SqlServer行转列PIVOT
- TCP 三次握手和四次挥手机制,TCP为什么要三次握手和四次挥手,TCP 连接建立失败处理机制
- Your family must be very poor if you fight like this!
- docker安装redis
- Practice of traffic recording and playback in vivo
猜你喜欢

I2C subsystem (IV): I2C debug

A2L file parsing based on CAN bus (2)

I2C 子系统(四):I2C debug

你真的懂继电器吗?

Kubernetes family container housekeeper pod online Q & A?

Installation and use of memory leak tool VLD

I2C subsystem (II): I3C spec

Today, it's time to copy the bottom!

Opengauss database development and debugging tool guide

Segmentation fault occurs during VFORK execution
随机推荐
Are there any recommended term life insurance products? I want to buy a term life insurance.
Source code analysis | layout file loading process
tensor中的append应该如何实现
Deep reinforcement learning for intelligent transportation systems: a survey paper reading notes
处理数据集,使用LabelEncoder将所有id转换为从0开始
How do you adjust the scope of activerecord Association in rails 3- How do you scope ActiveRecord associations in Rails 3?
Basic information of Promethus (I)
PHP constructor with parameters - PHP constructor with a parameter
[flutter] example of asynchronous programming code between future and futurebuilder (futurebuilder constructor setting | handling flutter Chinese garbled | complete code example)
Kubernetes cluster log and efk architecture log scheme
Distributed transaction
Add some hard dishes to the interview: how to improve throughput and timeliness in delayed task scenarios!
用docker 連接mysql的過程
Add automatic model generation function to hade
C#通用接口调用
MySql实战45讲【行锁】
Creation and destruction of function stack frame
From C to capable -- use the pointer as a function parameter to find out whether the string is a palindrome character
tensorflow转pytorch笔记;tf.gather_nd(x,y)转pytorch
C语言中左值和右值的区别