SAM/UI.py

162 lines
7.2 KiB
Python

import sys
import os
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1140, 450)
MainWindow.setMinimumSize(QtCore.QSize(1140, 450))
MainWindow.setMaximumSize(QtCore.QSize(1140, 450))
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton_w = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_w.setGeometry(QtCore.QRect(10, 90, 151, 51))
self.pushButton_w.setObjectName("pushButton_w")
self.pushButton_a = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_a.setGeometry(QtCore.QRect(10, 160, 71, 51))
self.pushButton_a.setObjectName("pushButton_a")
self.pushButton_d = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_d.setGeometry(QtCore.QRect(90, 160, 71, 51))
self.pushButton_d.setObjectName("pushButton_d")
self.pushButton_s = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_s.setGeometry(QtCore.QRect(10, 360, 151, 51))
self.pushButton_s.setObjectName("pushButton_s")
self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_5.setGeometry(QtCore.QRect(10, 230, 151, 51))
self.pushButton_5.setObjectName("pushButton_5")
self.label_orign = QtWidgets.QLabel(self.centralwidget)
self.label_orign.setGeometry(QtCore.QRect(180, 20, 471, 401))
self.label_orign.setStyleSheet("background-color: rgb(255, 255, 255);")
self.label_orign.setObjectName("label_orign")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(660, 20, 471, 401))
self.label_2.setStyleSheet("background-color: rgb(255, 255, 255);")
self.label_2.setObjectName("label_2")
self.pushButton_w_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_w_2.setGeometry(QtCore.QRect(10, 20, 151, 51))
self.pushButton_w_2.setObjectName("pushButton_w_2")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(50, 290, 81, 21))
self.lineEdit.setObjectName("lineEdit")
self.horizontalSlider = QtWidgets.QSlider(self.centralwidget)
self.horizontalSlider.setGeometry(QtCore.QRect(10, 320, 141, 22))
self.horizontalSlider.setSliderPosition(50)
self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
self.horizontalSlider.setTickInterval(0)
self.horizontalSlider.setObjectName("horizontalSlider")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1140, 23))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton_w.setText(_translate("MainWindow", "Predict"))
self.pushButton_a.setText(_translate("MainWindow", "Pre"))
self.pushButton_d.setText(_translate("MainWindow", "Next"))
self.pushButton_s.setText(_translate("MainWindow", "Save"))
self.pushButton_5.setText(_translate("MainWindow", "背景图"))
self.label_orign.setText(_translate("MainWindow", "<html><head/><body><p align=\"center\">原始图像</p></body></html>"))
self.label_2.setText(_translate("MainWindow", "<html><head/><body><p align=\"center\">预测图像</p></body></html>"))
self.pushButton_w_2.setText(_translate("MainWindow", "Openimg"))
self.lineEdit.setText(_translate("MainWindow", "改变mask大小"))
class MyMainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.image_path = ""
self.image_folder = ""
self.image_files = []
self.current_index = 0
self.pushButton_w_2.clicked.connect(self.open_image_folder)
self.pushButton_a.clicked.connect(self.load_previous_image)
self.pushButton_d.clicked.connect(self.load_next_image)
def open_image_folder(self):
folder_dialog = QtWidgets.QFileDialog()
folder_path = folder_dialog.getExistingDirectory(self, 'Open Image Folder', '')
if folder_path:
self.image_folder = folder_path
self.image_files = self.get_image_files(self.image_folder)
if self.image_files:
self.show_image_selection_dialog()
def get_image_files(self, folder_path):
image_files = [file for file in os.listdir(folder_path) if file.endswith(('png', 'jpg', 'jpeg', 'bmp'))]
return image_files
def show_image_selection_dialog(self):
dialog = QtWidgets.QDialog(self)
dialog.setWindowTitle("Select Image")
layout = QtWidgets.QVBoxLayout()
self.listWidget = QtWidgets.QListWidget()
for image_file in self.image_files:
item = QtWidgets.QListWidgetItem(image_file)
pixmap = QtGui.QPixmap(os.path.join(self.image_folder, image_file)).scaledToWidth(100)
item.setIcon(QtGui.QIcon(pixmap))
self.listWidget.addItem(item)
self.listWidget.itemDoubleClicked.connect(self.image_selected)
layout.addWidget(self.listWidget)
buttonBox = QtWidgets.QDialogButtonBox(QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel)
buttonBox.accepted.connect(self.image_selected)
buttonBox.rejected.connect(dialog.reject)
layout.addWidget(buttonBox)
dialog.setLayout(layout)
dialog.exec_()
def image_selected(self):
selected_item = self.listWidget.currentItem()
if selected_item:
selected_index = self.listWidget.currentRow()
if selected_index >= 0:
self.current_index = selected_index
self.show_image()
def show_image(self):
file_path = os.path.join(self.image_folder, self.image_files[self.current_index])
pixmap = QtGui.QPixmap(file_path)
self.label_orign.setPixmap(pixmap.scaled(self.label_orign.size(), QtCore.Qt.KeepAspectRatio))
def load_previous_image(self):
if self.image_files:
if self.current_index > 0:
self.current_index -= 1
else:
self.current_index = len(self.image_files) - 1
self.show_image()
def load_next_image(self):
if self.image_files:
if self.current_index < len(self.image_files) - 1:
self.current_index += 1
else:
self.current_index = 0
self.show_image()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
mainWindow = MyMainWindow()
mainWindow.show()
sys.exit(app.exec_())