Tread, 2024-05-08 04:13 采纳率: 33.3%
浏览 22
已结题

python的qt5界面

请你帮助我写一个python程序(pyqt5 界面)。这是一个图像修复系统,目前已有:六个文件夹,编号为result11 12 21 22 31 result32(代表三种修复模型和两种掩码方式),每个文件夹里分别还有三个文件夹(原图文件夹,掩码图文件夹和修复图文件夹,里面已有图片,而且三个文件夹里图片的命名编号一一对应,比如1.png,2.png)。请你设计界面实现以下功能:
1,三种模型和两种掩码方式用选择拉框实现;2,在选定模型和掩码方式的基础下,点击一个输入图片按钮,输入一张原图(显示在界面),然后再点击一个运行按钮,输出已选定模型和掩码方式下文件夹中与原图编号相同的掩码图和修复图(显示在界面),
3,界面尽量简洁。

  • 写回答

28条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-08 04:13
    关注
    获得0.30元问题酬金

    引自免费微信小程序:皆我百晓生

    为了实现您的需求,我们将使用Python的PyQt5库来创建一个图形用户界面(GUI),允许用户选择模型、掩码方式,并通过上传原图来查看对应的掩码图和修复图。下面是实现这个功能的完整代码示例。请确保您已经安装了PyQt5os库。

    首先,安装PyQt5库(如果尚未安装):

    pip install PyQt5
    

    接下来是程序的代码实现:

    import sys
    from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QPushButton, QComboBox, QLineEdit, QFileDialog, QGraphicsScene, QGraphicsView
    from PyQt5.QtGui import QPixmap
    from PyQt5.QtCore import Qt
    import os
    
    class ImageRepairSystem(QWidget):
        def __init__(self):
            super().__init__()
            self.initUI()
    
        def initUI(self):
            # 设置窗口大小和标题
            self.setWindowTitle('图像修复系统')
            self.setGeometry(100, 100, 800, 600)
            
            # 主布局
            main_layout = QVBoxLayout()
            self.setLayout(main_layout)
    
            # 顶部选择区域
            select_layout = QHBoxLayout()
            main_layout.addLayout(select_layout)
    
            # 模型选择
            self.model_combo = QComboBox()
            self.model_combo.addItems(['模型1', '模型2', '模型3'])
            select_layout.addWidget(QLabel('选择模型:'))
            select_layout.addWidget(self.model_combo)
    
            # 掩码方式选择
            self.mask_combo = QComboBox()
            self.mask_combo.addItems(['方式1', '方式2'])
            select_layout.addWidget(QLabel('选择掩码方式:'))
            select_layout.addWidget(self.mask_combo)
    
            # 图片显示区域
            image_layout = QHBoxLayout()
            main_layout.addLayout(image_layout)
    
            # 原图显示
            self.original_image_label = QLabel()
            self.original_image_label.setAlignment(Qt.AlignCenter)
            image_layout.addWidget(QLabel('原图:'))
            image_layout.addWidget(self.original_image_label)
    
            # 掩码图显示
            self.mask_image_label = QLabel()
            self.mask_image_label.setAlignment(Qt.AlignCenter)
            image_layout.addWidget(QLabel('掩码图:'))
            image_layout.addWidget(self.mask_image_label)
    
            # 修复图显示
            self.repaired_image_label = QLabel()
            self.repaired_image_label.setAlignment(Qt.AlignCenter)
            image_layout.addWidget(QLabel('修复图:'))
            image_layout.addWidget(self.repaired_image_label)
    
            # 功能按钮
            button_layout = QHBoxLayout()
            main_layout.addLayout(button_layout)
    
            self.load_button = QPushButton('选择原图')
            self.load_button.clicked.connect(self.load_original_image)
            button_layout.addWidget(self.load_button)
    
            self.run_button = QPushButton('开始修复')
            self.run_button.clicked.connect(self.run_repair_process)
            button_layout.addWidget(self.run_button)
    
            self.clear_button = QPushButton('清空显示')
            self.clear_button.clicked.connect(self.clear_images)
            button_layout.addWidget(self.clear_button)
    
        def load_original_image(self):
            file_path, _ = QFileDialog.getOpenFileName(self, '选择原图', '', 'Image Files (*.png *.jpg *.jpeg)')
            if file_path:
                pixmap = QPixmap(file_path)
                self.original_image_label.setPixmap(pixmap.scaledToWidth(200))
                self.original_image_path = file_path
                base_name = os.path.basename(file_path).split('.')[0]  # 获取图片基础名称
                self.base_name = base_name  # 保存用于后续匹配掩码和修复图
    
        def run_repair_process(self):
            if hasattr(self, 'base_name') and self.base_name:
                model_num = {model: idx+11 for idx, model in enumerate(['模型1', '模型2', '模型3'])}[self.model_combo.currentText()]
                mask_num = {mask: idx*10 for idx, mask in enumerate(['方式1', '方式2'], start=1)}[self.mask_combo.currentText()]
    
                # 构建目录路径
                result_folder = f'result{model_num}{mask_num}'
                original_folder = os.path.join(result_folder, '原图文件夹')
                mask_folder = os.path.join(result_folder, '掩码图文件夹')
                repaired_folder = os.path.join(result_folder, '修复图文件夹')
    
                # 查找并显示掩码图和修复图
                for folder, label in [(mask_folder, self.mask_image_label), (repaired_folder, self.repaired_image_label)]:
                    img_path = os.path.join(folder, f'{self.base_name}.png')
                    if os.path.exists(img_path):
                        pixmap = QPixmap(img_path)
                        label.setPixmap(pixmap.scaledToWidth(200))
                    else:
                        label.setText('图片不存在')
    
        def clear_images(self):
            self.original_image_label.clear()
            self.mask_image_label.clear()
            self.repaired_image_label.clear()
            if hasattr(self, 'original_image_path'):
                del self.original_image_path
            if hasattr(self, 'base_name'):
                del self.base_name
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = ImageRepairSystem()
        window.show()
        sys.exit(app.exec_())
    

    这段代码实现了一个简单的图像修复系统GUI,用户可以通过下拉菜单选择模型和掩码方式,上传原图后点击“开始修复”按钮来显示对应的掩码图和修复图。注意,此代码假设图片文件名格式与您描述的一致,并且所有必要的文件夹结构和图片都已经正确设置好。如果实际路径或文件名格式有所不同,您可能需要调整部分代码以适应实际情况。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月16日
  • 创建了问题 5月8日

悬赏问题

  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源