使用PyQt5和YOLOv5构建计算机视觉应用程序

77 篇文章 24 订阅 ¥59.90 ¥99.00
本文教程介绍了如何结合PyQt5和YOLOv5创建一个计算机视觉应用程序。通过Qt Designer创建GUI,加载预训练的YOLOv5模型,使用OpenCV加载图像并进行对象检测,最终在GUI中展示结果。
摘要由CSDN通过智能技术生成

在本文中,我们将学习如何使用PyQt5和YOLOv5创建一个简单的计算机视觉应用程序。我们将展示如何将YOLOv5模型集成到PyQt5应用程序中,并使用Qt Designer创建一个基本的GUI。最后,我们将展示如何在应用程序中加载图像并使用YOLOv5模型进行对象检测。

步骤1:安装依赖库

在Ubuntu或者Windows上安装以下依赖库:

pip install PyQt5==5.15.4
pip install opencv-python-headless==4.5.2.54
pip install numpy==1.19.3
pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/cu111/torch_stable.html
pip install yolov5==5.0

步骤2:创建GUI

我们将使用Qt Designer创建GUI。我们需要创建一个QWidget窗口,并为其添加一个QLabel作为容器,用于存储要检测的图像。

打开Qt Designer,创建一个QWidget窗口,然后向窗口添加一个QLabel。稍后,我们将使用代码将图像加载到QLabel中。

步骤3&

PyQt5是一个用于创建GUI应用程序的Python库,而YoloV5是一个用于目标检测的深度学习模型。如果你想将它们结合起来,可以使用PyQt5创建一个GUI界面来显示YoloV5检测到的结果,并提供一些控制和交互功能。 以下是一个简单的示例代码,用于在GUI界面中显示YoloV5检测到的结果: ```python import sys import cv2 import numpy as np from PyQt5.QtGui import QImage, QPixmap from PyQt5.QtWidgets import QApplication, QLabel, QWidget from PyQt5.QtCore import Qt # 导入yolov5模型和配置 sys.path.append('yolov5') from models.experimental import attempt_load from utils.general import check_img_size, non_max_suppression, scale_coords from utils.datasets import letterbox from utils.plots import plot_one_box class YoloWidget(QWidget): def __init__(self): super().__init__() self.label = QLabel(self) self.label.setAlignment(Qt.AlignCenter) self.setGeometry(100, 100, 800, 600) self.setWindowTitle('YoloV5 Demo') # 加载yolov5模型 self.model = attempt_load('yolov5s.pt', map_location='cpu') def detect_objects(self, image_path): # 加载图像并调整大小 img0 = cv2.imread(image_path) img = letterbox(img0, new_shape=self.model.img_size)[0] img = img[:, :, ::-1].transpose(2, 0, 1) img = np.ascontiguousarray(img) # 模型推理 img = torch.from_numpy(img).to(torch.float32) img /= 255.0 if img.ndimension() == 3: img = img.unsqueeze(0) pred = self.model(img)[0] pred = non_max_suppression(pred, 0.4, 0.5) # 绘制检测结果 for i, det in enumerate(pred): if len(det): det[:, :4] = scale_coords(img.shape[2:], det[:, :4], img0.shape).round() for *xyxy, conf, cls in reversed(det): c = int(cls) label = f'{self.model.names[c]} {conf:.2f}' plot_one_box(xyxy, img0, label=label, color=colors(c, True), line_thickness=3) # 显示图像 height, width, channel = img0.shape bytesPerLine = 3 * width qimage = QImage(img0.data, width, height, bytesPerLine, QImage.Format_RGB888) pixmap = QPixmap.fromImage(qimage) self.label.setPixmap(pixmap) self.label.resize(self.label.pixmap().size()) if __name__ == '__main__': app = QApplication(sys.argv) w = YoloWidget() w.detect_objects('image.jpg') w.show() sys.exit(app.exec_()) ``` 在这个例子中,我们创建了一个名为`YoloWidget`的自定义QWidget,它显示指定图像路径的检测结果。我们使用YoloV5模型对图像进行推理,并使用OpenCV将检测结果绘制在原始图像上。然后,我们使用PyQt5将图像显示在GUI界面中。你可以根据自己的需求添加更多的控制和交互功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值