pyqt5 yolov11目标检测界面
时间: 2025-04-22 18:26:16 浏览: 30
### 构建PyQt5 GUI以实现YOLOv11目标检测应用
#### 创建项目结构
为了高效地管理代码,建议按照模块化的方式组织文件夹和文件。通常情况下,一个典型的项目结构如下:
- `main.py`:程序入口点。
- `ui/`:存储由 Qt Designer 设计并转换成 Python 代码的 UI 文件。
- `models/`:放置 YOLOv11 的权重和其他配置文件。
- `utils/`:辅助函数库。
#### 使用Qt Designer设计界面
通过Qt Designer可视化编辑器来绘制用户交互窗口[^2]。完成布局后保存为`.ui`格式,并使用`pyuic5`命令将其编译为Python脚本以便于后续编程调用。
```bash
$ pyuic5 -o ui_mainwindow.py mainwindow.ui
```
#### 加载预训练模型
对于YOLOv11而言,在加载之前需确认已安装必要的依赖项如OpenCV、Torch等。接着定义一个类负责初始化网络参数以及执行推理过程。
```python
import torch
from models.experimental import attempt_load
class Detector():
def __init__(self, weights_path='weights/yolov11.pt'):
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model = attempt_load(weights_path, map_location=device)
self.model = model.eval().to(device)
def detect(self, img):
results = self.model(img)
return results.pandas().xyxy[0].values.tolist()
```
#### 实现主窗体逻辑
继承自`QMainWindow`基类创建新的子类表示应用程序的主要视图控制器。在此基础上关联按钮点击事件处理方法至槽函数,从而触发图像上传、预测分析等功能操作。
```python
from PyQt5.QtWidgets import QMainWindow, QApplication, QFileDialog
from ui.ui_mainwindow import Ui_MainWindow
from utils.detector import Detector
import sys
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(parent=None):
super().__init__(parent=parent)
setupUi(this)
detector_instance = Detector()
@Slot()
def on_btn_select_image_clicked():
file_name,_ = QFileDialog.getOpenFileName(
caption="Select Image", filter="Images (*.png *.jpg)")
if not file_name:
return
pixmap.load(file_name)
lbl_image.setPixmap(pixmap.scaled(lbl_image.size()))
detections = detector_instance.detect(cv2.imread(file_name))
update_detection_list(detections)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
showMaximized(window)
exit(app.exec_())
```
阅读全文
相关推荐


















