基于yolov5和pyqt的水果识别系统
可以实现图片,视频,摄像头的检测!
在这里插入图片描述
以下文字及示例代码仅供参考

基于YOLOv5和PyQt的水果识别系统是一个将深度学习模型应用于图像识别领域,并结合图形用户界面(GUI)技术来提供用户交互的应用实例。下面我将为你展示如何构建这样一个系统,包括使用YOLOv5进行水果检测以及利用PyQt创建一个简单的用户界面。

首先,确保你已经安装了必要的库:

pip install torch torchvision torchaudio  # 安装PyTorch及其相关组件
pip install opencv-python                 # OpenCV用于图像处理
pip install PyQt5                         # PyQt5用于创建GUI

接下来是Python代码示例,展示如何实现这个系统:

1. 加载YOLOv5模型

首先,我们需要加载预训练的YOLOv5模型(假设这里我们用的是YOLOv5s,即YOLOv5的小型版本),并准备用于推理。

import torch

# 加载YOLOv5s模型
model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)

# 如果有针对水果检测训练的模型权重,可以替换这里的'pretrained=True'
# model = torch.hub.load('ultralytics/yolov5', 'custom', path='path/to/your/fruit_detection_weights.pt')

2. 创建PyQt GUI

然后,我们创建一个简单的PyQt应用程序,允许用户选择图片文件,并显示检测结果。

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton, QFileDialog
from PyQt5.QtGui import QPixmap
import cv2

class FruitDetectionApp(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Fruit Detection System")
        self.setGeometry(100, 100, 800, 600)
        
        self.imageLabel = QLabel(self)
        self.imageLabel.setGeometry(10, 10, 780, 500)
        
        self.button = QPushButton("Load Image", self)
        self.button.setGeometry(350, 550, 100, 30)
        self.button.clicked.connect(self.load_image)
    
    def load_image(self):
        fname = QFileDialog.getOpenFileName(self, 'Open file', '/home')[0]
        if fname:
            self.detect_fruits(fname)
    
    def detect_fruits(self, image_path):
        # 使用YOLOv5进行预测
        results = model(image_path)
        
        # 显示原始图像
        img = cv2.imread(image_path)
        for i, (xmin, ymin, xmax, ymax, conf, cls) in enumerate(results.xyxy[0]):
            # 绘制边界框和标签
            cv2.rectangle(img, (int(xmin), int(ymin)), (int(xmax), int(ymax)), (0, 255, 0), 2)
            cv2.putText(img, f'{results.names[int(cls)]} {conf:.2f}', (int(xmin), int(ymin)-10), 
                        cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0,255,0), 2)
        
        # 将OpenCV格式的图像转换为QPixmap,并在GUI中显示
        rgbImage = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        h, w, ch = rgbImage.shape
        bytesPerLine = ch * w
        convertToQtFormat = QPixmap.fromImage(rgbImage).scaled(self.imageLabel.width(), self.imageLabel.height())
        self.imageLabel.setPixmap(convertToQtFormat)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = FruitDetectionApp()
    ex.show()
    sys.exit(app.exec_())

这段代码实现了以下功能:

  • 加载YOLOv5模型,并设置其用于水果检测。
  • 使用PyQt5创建了一个简单的GUI,允许用户通过点击按钮选择本地图片文件。
  • 对选定的图片执行水果检测,并在图片上绘制边界框和类别标签,最后在GUI中显示处理后的图片。

请注意,你需要根据实际使用的环境调整路径和配置。此外,为了提高水果检测的准确性,建议使用专门针对水果数据集训练的YOLOv5模型。如果需要,可以通过迁移学习的方式训练自己的模型。

在这里插入图片描述

更多推荐