class Ui_MainWindow(QtGui.QMainWindow): def __init__(self): super(Ui_MainWindow, self).__init__() self.imgPreProc = imagePreProcessor() def setupUi(self, MainWindow): MainWindow.showMaximized() MainWindow.setObjectName(_fromUtf8("MainWindow")) #MainWindow.resize(1014, 682) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setLayoutDirection(QtCore.Qt.LeftToRight) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.gridLayout_4 = QtGui.QGridLayout(self.centralwidget) self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4")) self.frame_2 = QtGui.QFrame(self.centralwidget) self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel) self.frame_2.setFrameShadow(QtGui.QFrame.Raised) self.frame_2.setObjectName(_fromUtf8("frame_2")) self.gridLayout_3 = QtGui.QGridLayout(self.frame_2) self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) self.scrollArea_2 = QtGui.QScrollArea(self.frame_2) self.scrollArea_2.setWidgetResizable(True) self.scrollArea_2.setObjectName(_fromUtf8("scrollArea_2")) self.scrollAreaWidgetContents_2 = QtGui.QWidget() self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 459, 448)) self.scrollAreaWidgetContents_2.setObjectName(_fromUtf8("scrollAreaWidgetContents_2")) self.gridLayout_6 = QtGui.QGridLayout(self.scrollAreaWidgetContents_2) self.gridLayout_6.setObjectName(_fromUtf8("gridLayout_6")) self.modifided_image = ImageWidget(self.scrollAreaWidgetContents_2) self.modifided_image.setObjectName(_fromUtf8("modifided_image")) self.gridLayout_6.addWidget(self.modifided_image, 0, 0, 1, 1) self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_2) self.gridLayout_3.addWidget(self.scrollArea_2, 0, 0, 1, 1) self.gridLayout_4.addWidget(self.frame_2, 0, 1, 1, 1) self.frame = QtGui.QFrame(self.centralwidget) self.frame.setFrameShape(QtGui.QFrame.StyledPanel) self.frame.setFrameShadow(QtGui.QFrame.Raised) self.frame.setObjectName(_fromUtf8("frame")) self.gridLayout_2 = QtGui.QGridLayout(self.frame) self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) self.scrollArea = QtGui.QScrollArea(self.frame) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName(_fromUtf8("scrollArea")) self.scrollAreaWidgetContents = QtGui.QWidget() self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 459, 448)) self.scrollAreaWidgetContents.setObjectName(_fromUtf8("scrollAreaWidgetContents")) self.gridLayout_5 = QtGui.QGridLayout(self.scrollAreaWidgetContents) self.gridLayout_5.setObjectName(_fromUtf8("gridLayout_5")) self.original_image = ImageWidget(self.scrollAreaWidgetContents) self.original_image.setObjectName(_fromUtf8("original_image")) self.gridLayout_5.addWidget(self.original_image, 0, 0, 1, 1) self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.gridLayout_2.addWidget(self.scrollArea, 0, 0, 1, 1) self.gridLayout_4.addWidget(self.frame, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.dockWidget = QtGui.QDockWidget(MainWindow) self.dockWidget.setObjectName(_fromUtf8("dockWidget")) self.dockWidget.setFloating(True) self.dockWidget.setGeometry(QtCore.QRect(0, 0, 620, 220)) self.dockWidgetContents = QtGui.QWidget() self.dockWidgetContents.setObjectName(_fromUtf8("dockWidgetContents")) self.horizontalLayout = QtGui.QHBoxLayout(self.dockWidgetContents) self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) self.frame_4 = QtGui.QFrame(self.dockWidgetContents) self.frame_4.setFrameShape(QtGui.QFrame.StyledPanel) self.frame_4.setFrameShadow(QtGui.QFrame.Raised) self.frame_4.setObjectName(_fromUtf8("frame_4")) self.gridLayout_8 = QtGui.QGridLayout(self.frame_4) self.gridLayout_8.setObjectName(_fromUtf8("gridLayout_8")) self.original_histogram = Chart(self.frame_4) self.original_histogram.setObjectName(_fromUtf8("original_histogram")) self.gridLayout_8.addWidget(self.original_histogram, 0, 0, 1, 1) self.horizontalLayout.addWidget(self.frame_4) self.frame_3 = QtGui.QFrame(self.dockWidgetContents) self.frame_3.setFrameShape(QtGui.QFrame.StyledPanel) self.frame_3.setFrameShadow(QtGui.QFrame.Raised) self.frame_3.setObjectName(_fromUtf8("frame_3")) self.gridLayout_7 = QtGui.QGridLayout(self.frame_3) self.gridLayout_7.setObjectName(_fromUtf8("gridLayout_7")) self.modifided_histogram = Chart(self.frame_3) self.modifided_histogram.setObjectName(_fromUtf8("modifided_histogram")) self.gridLayout_7.addWidget(self.modifided_histogram, 0, 0, 1, 1) self.horizontalLayout.addWidget(self.frame_3) self.dockWidget.setWidget(self.dockWidgetContents) MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(8), self.dockWidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 1014, 22)) self.menubar.setObjectName(_fromUtf8("menubar")) self.menuFile = QtGui.QMenu(self.menubar) self.menuFile.setObjectName(_fromUtf8("menuFile")) self.menuOperations = QtGui.QMenu(self.menubar) self.menuOperations.setObjectName(_fromUtf8("menuOperations")) self.menuOperations.setEnabled(False) self.menuHistogram_Modification = QtGui.QMenu(self.menuOperations) self.menuHistogram_Modification.setObjectName(_fromUtf8("menuHistogram_Modification")) self.menuSlide_Histogram = QtGui.QMenu(self.menuHistogram_Modification) self.menuSlide_Histogram.setObjectName(_fromUtf8("menuSlide_Histogram")) self.menuMapping_Equations = QtGui.QMenu(self.menuOperations) self.menuMapping_Equations.setObjectName(_fromUtf8("menuMapping_Equations")) self.menuLocal_Mask_Operations = QtGui.QMenu(self.menuOperations) self.menuLocal_Mask_Operations.setObjectName(_fromUtf8("menuLocal_Mask_Operations")) self.menuSegmentation = QtGui.QMenu(self.menuOperations) self.menuSegmentation.setObjectName(_fromUtf8("menuSegmentation")) MainWindow.setMenuBar(self.menubar) self.actionOpen = QtGui.QAction(MainWindow) self.actionOpen.setObjectName(_fromUtf8("action_Open")) self.actionOpen.setShortcut('Ctrl+O') self.actionOpen.triggered.connect(self.showOpen) self.actionExit = QtGui.QAction(MainWindow) self.actionExit.setObjectName(_fromUtf8("actionExit")) self.actionExit.setShortcut('Ctrl+Q') self.actionExit.setStatusTip('Exit application') self.actionExit.triggered.connect(QtGui.qApp.quit) self.menuFile.addAction(self.actionOpen) self.menuFile.addAction(self.actionExit) self.actionStretch_Histogram = QtGui.QAction(MainWindow) self.actionStretch_Histogram.setObjectName(_fromUtf8("actionStretch_Histogram")) self.actionStretch_Histogram.triggered.connect(self.stretchHisto) self.actionShrink_Histogram = QtGui.QAction(MainWindow) self.actionShrink_Histogram.setObjectName(_fromUtf8("actionShrink_Histogram")) self.actionShrink_Histogram.triggered.connect(self.shrinkHisto) self.actionLeft = QtGui.QAction(MainWindow) self.actionLeft.setObjectName(_fromUtf8("actionLeft")) self.actionLeft.triggered.connect(self.slidesLeftHisto) self.actionRight = QtGui.QAction(MainWindow) self.actionRight.setObjectName(_fromUtf8("actionRight")) self.actionRight.triggered.connect(self.slidesRightHisto) self.actionHistogram_Equalization = QtGui.QAction(MainWindow) self.actionHistogram_Equalization.setObjectName(_fromUtf8("actionHistogram_Equalization")) self.actionHistogram_Equalization.triggered.connect(self.histogramEqualization) self.actionNegative = QtGui.QAction(MainWindow) self.actionNegative.setObjectName(_fromUtf8("actionNegative")) self.actionNegative.triggered.connect(self.negative) self.actionMean_Local_Filtering = QtGui.QAction(MainWindow) self.actionMean_Local_Filtering.setObjectName(_fromUtf8("actionMean_Local_Filtering")) self.actionMean_Local_Filtering.triggered.connect(self.meanFilter) self.actionMedian_Local_Filtering = QtGui.QAction(MainWindow) self.actionMedian_Local_Filtering.setObjectName(_fromUtf8("actionMedian_Local_Filtering")) self.actionMedian_Local_Filtering.triggered.connect(self.medianFilter) self.actionSobel_Edge_Detector = QtGui.QAction(MainWindow) self.actionSobel_Edge_Detector.setObjectName(_fromUtf8("actionSobel_Edge_Detector")) self.actionSobel_Edge_Detector.triggered.connect(self.edgeDetection) self.menuSlide_Histogram.addAction(self.actionLeft) self.menuSlide_Histogram.addAction(self.actionRight) self.menuHistogram_Modification.addAction(self.actionStretch_Histogram) self.menuHistogram_Modification.addAction(self.actionShrink_Histogram) self.menuHistogram_Modification.addAction(self.menuSlide_Histogram.menuAction()) self.menuHistogram_Modification.addAction(self.actionHistogram_Equalization) self.menuMapping_Equations.addAction(self.actionNegative) self.menuLocal_Mask_Operations.addAction(self.actionMean_Local_Filtering) self.menuLocal_Mask_Operations.addAction(self.actionMedian_Local_Filtering) self.menuSegmentation.addAction(self.actionSobel_Edge_Detector) self.menuOperations.addAction(self.menuHistogram_Modification.menuAction()) self.menuOperations.addAction(self.menuMapping_Equations.menuAction()) self.menuOperations.addAction(self.menuLocal_Mask_Operations.menuAction()) self.menuOperations.addAction(self.menuSegmentation.menuAction()) self.menubar.addAction(self.menuFile.menuAction()) self.menubar.addAction(self.menuOperations.menuAction()) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName(_fromUtf8("statusbar")) MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) self.menuFile.setTitle(_translate("MainWindow", "File", None)) self.menuOperations.setTitle(_translate("MainWindow", "Operations", None)) self.menuHistogram_Modification.setTitle(_translate("MainWindow", "Histogram Modification", None)) self.menuSlide_Histogram.setTitle(_translate("MainWindow", "Slide Histogram", None)) self.menuMapping_Equations.setTitle(_translate("MainWindow", "Mapping Equations", None)) self.menuLocal_Mask_Operations.setTitle(_translate("MainWindow", "Local (Mask) Operations", None)) self.menuSegmentation.setTitle(_translate("MainWindow", "Segmentation", None)) self.actionOpen.setText(_translate("MainWindow", "Open", None)) self.actionExit.setText(_translate("MainWindow", "Exit", None)) self.actionStretch_Histogram.setText(_translate("MainWindow", "Stretch Histogram", None)) self.actionShrink_Histogram.setText(_translate("MainWindow", "Shrink Histogram", None)) self.actionLeft.setText(_translate("MainWindow", "Left", None)) self.actionRight.setText(_translate("MainWindow", "Right", None)) self.actionHistogram_Equalization.setText(_translate("MainWindow", "Histogram Equalization", None)) self.actionNegative.setText(_translate("MainWindow", "Negative", None)) self.actionMean_Local_Filtering.setText(_translate("MainWindow", "Mean Local Filtering", None)) self.actionMedian_Local_Filtering.setText(_translate("MainWindow", "Median Local Filtering", None)) self.actionSobel_Edge_Detector.setText(_translate("MainWindow", "Sobel Edge Detector", None)) def showOpen(self): """Shows the file opening dialog.""" filepath = QtGui.QFileDialog.getOpenFileName( self, 'Open File', '', 'All Files (*.*);;jpeg (*.jpeg);;jpg (*.jpg);;png (*.png)') if filepath: self.open(filepath) def showIntDialog(self, title, text): amount, ok = QtGui.QInputDialog.getInt(self, title, text) if ok: return amount else: return 0 def open(self, filepath): self.imgPreProc.loadImage(str(filepath)) self.original_image.Qimg = ImageQt.ImageQt(self.imgPreProc.img.convert("RGB") if self.imgPreProc.img.mode == "L" else self.imgPreProc.img) self.original_image.repaint() self.original_histogram.setData(self.imgPreProc.histo) self.refreshAll() self.menuOperations.setEnabled(True) def repaintImage(self): self.modifided_image.Qimg = ImageQt.ImageQt(self.imgPreProc.img.convert("RGB") if self.imgPreProc.img.mode == "L" else self.imgPreProc.img) self.modifided_image.repaint() def rebuildHisto(self): self.modifided_histogram.setData(self.imgPreProc.histo) def refreshAll(self): self.rebuildHisto() self.repaintImage() def stretchHisto(self): self.imgPreProc.stretchHisto() self.refreshAll() def shrinkHisto(self): minR = self.showIntDialog('Histogram Min Shrink', 'Shrink Min:') if minR: maxR = self.showIntDialog('Histogram Max Shrink', 'Shrink Max:') if maxR: self.imgPreProc.shrinkHisto(minR, maxR) self.refreshAll() else : QtGui.QMessageBox.critical(self, "Error", "Provide the the Max") else : QtGui.QMessageBox.critical(self, "Error", "Provide the the Min") def slidesLeftHisto(self): amount = self.showIntDialog('Slide Histogram, Left', 'Sliding Amount:') if amount: self.imgPreProc.slidesLeftHisto(amount) self.refreshAll() else : QtGui.QMessageBox.critical(self, "Error", "Provide the amount of sliding") def slidesRightHisto(self): amount = self.showIntDialog('Slide Histogram, Right', 'Sliding Amount:') if amount: self.imgPreProc.slidesRightHisto(amount) self.refreshAll() else : QtGui.QMessageBox.critical(self, "Error", "You have to fill the By") def histogramEqualization(self): self.imgPreProc.histogramEqualization() self.refreshAll() def negative(self): self.imgPreProc.negative() self.refreshAll() def meanFilter(self): self.imgPreProc.meanFilter() self.refreshAll() def medianFilter(self): self.imgPreProc.medianFilter() self.refreshAll() def edgeDetection(self): self.imgPreProc.edgeDetection() self.refreshAll()