162 lines
7.2 KiB
Python
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_())
|
|
|
|
|
|
|
|
|