pyqt5 yolov5目标检测界面火灾
时间: 2025-04-22 11:06:05 浏览: 29
### 使用 PyQt5 创建 GUI 并集成 YOLOv5 进行火灾目标检测
#### 设计用户界面布局
为了创建一个直观的用户界面,可以利用 PYQT5 提供的各种控件来设计。这包括按钮、标签、输入框以及图像显示区域等基本元素[^1]。
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton, QVBoxLayout, QWidget, QFileDialog
from PyQt5.QtGui import QPixmap
```
#### 初始化主窗口类
定义一个继承自 `QMainWindow` 的类,在其中设置好各个部件的位置关系并初始化必要的变量。
```python
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("火灾目标检测系统")
layout = QVBoxLayout()
# 添加文件选择按钮
btn_select_file = QPushButton('选择视频')
btn_select_file.clicked.connect(self.open_video_dialog)
# 显示选中文件路径
self.label_filepath = QLabel('')
# 图像展示区
self.image_label = QLabel()
self.image_label.setFixedSize(640, 480)
layout.addWidget(btn_select_file)
layout.addWidget(self.label_filepath)
layout.addWidget(self.image_label)
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
def open_video_dialog(self):
filename, _ = QFileDialog.getOpenFileName(filter="Video files (*.mp4 *.avi)")
if filename:
self.label_filepath.setText(filename)
```
#### 加载YOLOv5模型并与GUI交互
引入 PyTorch 和其他依赖库加载预训练好的 YOLOv5 模型,并编写函数处理来自用户的输入(比如上传图片/视频),调用模型预测并将结果显示给用户看。
```python
import torch
from PIL import Image
import cv2
import numpy as np
# 假设已经下载好了 yolov5.pt 文件到本地目录下
model_path = 'path/to/yolov5s.pt'
device = "cuda" if torch.cuda.is_available() else "cpu"
model = torch.hub.load('ultralytics/yolov5', 'custom', path=model_path).to(device)
def detect_fire_in_image(image_path):
img = Image.open(image_path)
results = model(img.size()[::-1]) # 反转宽高顺序适应模型需求
detected_objects = []
for detection in results.xyxy[0]:
label = int(detection[-1])
confidence = float(detection[-2])
bbox = list(map(int, detection[:4]))
detected_objects.append((label, confidence, bbox))
return detected_objects
```
#### 更新 UI 来反映检测结果
当有新的检测结果返回时,更新界面上对应部分的内容,如标注矩形框表示疑似火源位置,改变颜色或添加文字说明等方式突出显示重要信息。
```python
def update_ui_with_detection_results(results):
pass # 此处省略具体实现细节
```
以上代码片段展示了如何使用 PyQt5 构建基础框架,并准备了与 YOLOv5 配合工作的接口;实际项目还需要进一步完善错误处理机制、优化性能等方面的工作[^2]。
阅读全文
相关推荐


















