Update mainwindow.py

master
pzpw5boyq 2 years ago
parent b1b3c13dda
commit 0d8ede5c39

@ -1,365 +1,365 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtWidgets import QFileDialog
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import *
import sys
import os
import argparse
import cv2
import numpy as np
class Ui_MainWindow(QMainWindow):
def __init__(self):
super(Ui_MainWindow,self).__init__()
self.setupUi(self)
self.retranslateUi(self)
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1304, 746)
self.centralWidget = QtWidgets.QWidget(MainWindow)
self.centralWidget.setObjectName("centralWidget")
self.toolbar = QtWidgets.QToolBox(self.centralWidget)
self.toolbar.setGeometry(QtCore.QRect(1040, 0, 251, 531))
self.toolbar.setFrameShadow(QtWidgets.QFrame.Sunken)
self.toolbar.setObjectName("toolbar")
self.basicOperation = QtWidgets.QWidget()
self.basicOperation.setGeometry(QtCore.QRect(0, 0, 251, 375))
self.basicOperation.setObjectName("basicOperation")
self.rotateButton = QtWidgets.QPushButton(self.basicOperation)
self.rotateButton.setGeometry(QtCore.QRect(80, 170, 112, 34))
self.rotateButton.setObjectName("rotateButton")
self.rotateButton.clicked.connect(self.rotate) # 旋转信息槽
self.greyButton = QtWidgets.QPushButton(self.basicOperation)
self.greyButton.setGeometry(QtCore.QRect(80, 220, 112, 34))
self.greyButton.setObjectName("greyButton")
self.greyButton.clicked.connect(self.turngrey) # 灰度图像信息槽
self.mirrorButton = QtWidgets.QPushButton(self.basicOperation)
self.mirrorButton.setGeometry(QtCore.QRect(80, 270, 112, 34))
self.mirrorButton.setObjectName("mirrorButton")
self.mirrorButton.clicked.connect(self.mirror) # 镜像信息槽
self.biggerButton = QtWidgets.QPushButton(self.basicOperation)
self.biggerButton.setGeometry(QtCore.QRect(40, 20, 75, 23))
self.biggerButton.setObjectName("biggerButton")
self.biggerButton.clicked.connect(self.bigger) # 放大信息槽
self.smallerButton = QtWidgets.QPushButton(self.basicOperation)
self.smallerButton.setGeometry(QtCore.QRect(150, 20, 75, 23))
self.smallerButton.setObjectName("smallerButton")
self.smallerButton.clicked.connect(self.smaller)# 缩小信息槽
self.upButton = QtWidgets.QPushButton(self.basicOperation)
self.upButton.setGeometry(QtCore.QRect(40, 70, 75, 23))
self.upButton.setObjectName("upButton")
self.upButton.clicked.connect(self.up) # 上移信息槽
self.downButton = QtWidgets.QPushButton(self.basicOperation)
self.downButton.setGeometry(QtCore.QRect(150, 70, 75, 23))
self.downButton.setObjectName("downButton")
self.downButton.clicked.connect(self.down) # 下移信息槽
self.leftButton = QtWidgets.QPushButton(self.basicOperation)
self.leftButton.setGeometry(QtCore.QRect(40, 110, 75, 23))
self.leftButton.setObjectName("leftButton")
self.leftButton.clicked.connect(self.left) # 左移信息槽
self.rightButton = QtWidgets.QPushButton(self.basicOperation)
self.rightButton.setGeometry(QtCore.QRect(150, 110, 75, 23))
self.rightButton.setObjectName("rightButton")
self.rightButton.clicked.connect(self.right) # 右移信息槽
self.toolbar.addItem(self.basicOperation, "")
self.edgeDitect = QtWidgets.QWidget()
self.edgeDitect.setGeometry(QtCore.QRect(0, 0, 98, 28))
self.edgeDitect.setObjectName("edgeDitect")
self.edgeButton_4 = QtWidgets.QPushButton(self.edgeDitect)
self.edgeButton_4.setGeometry(QtCore.QRect(70, 20, 112, 34))
self.edgeButton_4.setObjectName("edgeButton_4")
self.edgeButton_4.clicked.connect(self.edge) # 边缘检测信息槽
self.toolbar.addItem(self.edgeDitect, "")
self.enhance = QtWidgets.QWidget()
self.enhance.setGeometry(QtCore.QRect(0, 0, 98, 28))
self.enhance.setObjectName("enhance")
self.sharpenButton = QtWidgets.QPushButton(self.enhance)
self.sharpenButton.setGeometry(QtCore.QRect(80, 10, 112, 34))
self.sharpenButton.setObjectName("sharpenButton")
self.sharpenButton.clicked.connect(self.sharpen) # 锐化信息槽
self.smoothingButton = QtWidgets.QPushButton(self.enhance)
self.smoothingButton.setGeometry(QtCore.QRect(80, 60, 112, 34))
self.smoothingButton.setObjectName("smoothingButton")
self.smoothingButton.clicked.connect(self.smoothing) # 平滑信息槽
self.toolbar.addItem(self.enhance, "")
self.noiseReduction = QtWidgets.QWidget()
self.noiseReduction.setGeometry(QtCore.QRect(0, 0, 98, 28))
self.noiseReduction.setObjectName("noiseReduction")
self.denoiseButton = QtWidgets.QPushButton(self.noiseReduction)
self.denoiseButton.setGeometry(QtCore.QRect(80, 20, 112, 34))
self.denoiseButton.setObjectName("denoiseButton")
self.denoiseButton.clicked.connect(self.denoise) # 降噪信息槽
self.toolbar.addItem(self.noiseReduction, "")
self.morphology = QtWidgets.QWidget()
self.morphology.setGeometry(QtCore.QRect(0, 0, 98, 28))
self.morphology.setObjectName("morphology")
self.erosionButton = QtWidgets.QPushButton(self.morphology)
self.erosionButton.setGeometry(QtCore.QRect(90, 10, 91, 31))
self.erosionButton.setObjectName("erosionButton")
self.erosionButton.clicked.connect(self.erosion) # 腐蚀信息槽
self.dilationButton = QtWidgets.QPushButton(self.morphology)
self.dilationButton.setGeometry(QtCore.QRect(90, 70, 91, 31))
self.dilationButton.setObjectName("dilationButton")
self.dilationButton.clicked.connect(self.dilation)# 膨胀信息槽
self.toolbar.addItem(self.morphology, "")
self.filter = QtWidgets.QWidget()
self.filter.setGeometry(QtCore.QRect(0, 0, 251, 305))
self.filter.setObjectName("filter")
self.oilpaintingButton = QtWidgets.QPushButton(self.filter)
self.oilpaintingButton.setGeometry(QtCore.QRect(70, 20, 111, 31))
self.oilpaintingButton.setObjectName("oilpaintingButton")
self.oilpaintingButton.clicked.connect(self.oilpainting) # 油画滤镜信息槽
self.watercolorButton = QtWidgets.QPushButton(self.filter)
self.watercolorButton.setGeometry(QtCore.QRect(70, 90, 111, 31))
self.watercolorButton.setObjectName("watercolorButton")
self.watercolorButton.clicked.connect(self.watercolor) # 水彩滤镜信息槽
self.toolbar.addItem(self.filter, "")
self.saveButton = QtWidgets.QPushButton(self.centralWidget)
self.saveButton.setGeometry(QtCore.QRect(1120, 540, 112, 34))
self.saveButton.setObjectName("saveButton")
self.saveButton.clicked.connect(self.save) # 保存信息槽
self.picture = QtWidgets.QLabel(self.centralWidget)
self.picture.setGeometry(QtCore.QRect(20, 10, 1011, 671))
self.picture.setObjectName("picture")
MainWindow.setCentralWidget(self.centralWidget)
self.menuBar = QtWidgets.QMenuBar(MainWindow)
self.menuBar.setGeometry(QtCore.QRect(0, 0, 1304, 22))
self.menuBar.setObjectName("menuBar")
self.file = QtWidgets.QMenu(self.menuBar)
self.file.setObjectName("file")
MainWindow.setMenuBar(self.menuBar)
self.mainToolBar = QtWidgets.QToolBar(MainWindow)
self.mainToolBar.setObjectName("mainToolBar")
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
self.statusBar = QtWidgets.QStatusBar(MainWindow)
self.statusBar.setObjectName("statusBar")
MainWindow.setStatusBar(self.statusBar)
self.actionOpen_pic = QtWidgets.QAction(MainWindow)
self.actionOpen_pic.setObjectName("actionOpen_pic")
self.actionOpen_pic.triggered.connect(self.openpic) # 打开图片信息槽
self.file.addAction(self.actionOpen_pic)
self.menuBar.addAction(self.file.menuAction())
self.retranslateUi(MainWindow)
self.toolbar.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.rotateButton.setText(_translate("MainWindow", "旋转"))
self.greyButton.setText(_translate("MainWindow", "转为灰度图像"))
self.mirrorButton.setText(_translate("MainWindow", "镜像"))
self.biggerButton.setText(_translate("MainWindow", "放大"))
self.smallerButton.setText(_translate("MainWindow", "缩小"))
self.upButton.setText(_translate("MainWindow", "上移"))
self.downButton.setText(_translate("MainWindow", "下移"))
self.leftButton.setText(_translate("MainWindow", "左移"))
self.rightButton.setText(_translate("MainWindow", "右移"))
self.toolbar.setItemText(self.toolbar.indexOf(self.basicOperation), _translate("MainWindow", "图像基本操作"))
self.edgeButton_4.setText(_translate("MainWindow", "边缘检测"))
self.toolbar.setItemText(self.toolbar.indexOf(self.edgeDitect), _translate("MainWindow", "边缘检测"))
self.sharpenButton.setText(_translate("MainWindow", "图像锐化"))
self.smoothingButton.setText(_translate("MainWindow", "图像平滑"))
self.toolbar.setItemText(self.toolbar.indexOf(self.enhance), _translate("MainWindow", "图像增强"))
self.denoiseButton.setText(_translate("MainWindow", "去除噪声"))
self.toolbar.setItemText(self.toolbar.indexOf(self.noiseReduction), _translate("MainWindow", "噪声去除"))
self.erosionButton.setText(_translate("MainWindow", "图像腐蚀"))
self.dilationButton.setText(_translate("MainWindow", "图像膨胀"))
self.toolbar.setItemText(self.toolbar.indexOf(self.morphology), _translate("MainWindow", "图像形态学操作"))
self.oilpaintingButton.setText(_translate("MainWindow", "油画滤镜"))
self.watercolorButton.setText(_translate("MainWindow", "水彩滤镜"))
self.toolbar.setItemText(self.toolbar.indexOf(self.filter), _translate("MainWindow", "添加滤镜"))
self.saveButton.setText(_translate("MainWindow", "保存修改"))
self.picture.setText(_translate("MainWindow", ""))
self.file.setTitle(_translate("MainWindow", "文件"))
self.actionOpen_pic.setText(_translate("MainWindow", "打开图片"))
def openpic(self):
print(cv2.__file__)
address = QFileDialog.getOpenFileName(self, "选取图片", "./", "Image files(*.png *.jpg *.jpeg *.gif);;all files(*.*)")
self.filename = address[0]
if self.filename:
print(self.filename)
self.pic = QtGui.QPixmap(self.filename)
self.picture.setPixmap(self.pic)
self.newPic = cv2.imread(self.filename)
# print("1")
cv2.imwrite('./tempPic.png', self.newPic)
# print("2")
def save(self):
saveAddress = QFileDialog.getSaveFileName(self, "保存文件", "./", "Image files(*.png *.jpg *.jpeg *.gif);;all files(*.*)")
print(saveAddress[0])
if saveAddress[0]:
self.newPic = cv2.imread('./tempPic.png')
cv2.imwrite(saveAddress[0], self.newPic)
def rotate(self):
img = cv2.imread('./tempPic.png') # 图像旋转
res = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def smoothing(self):
getpic = cv2.imread('./tempPic.png') # 图像平滑
smoothpic = cv2.bilateralFilter(getpic, 5, 255, 10) # 双边滤波
cv2.imwrite("./tempPic.png", smoothpic)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def sharpen(self):
getpic = cv2.imread('./tempPic.png') # 图像锐化
sharpen_op = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], dtype=np.float32)
sharpen_image = cv2.filter2D(getpic, cv2.CV_32F, sharpen_op)
sharpen_image = cv2.convertScaleAbs(sharpen_image)
cv2.imwrite("./tempPic.png", sharpen_image)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def bigger(self):
getpic = cv2.imread('./tempPic.png') # 图像放大
res = cv2.resize(getpic, None, fx=1.3, fy=1.3, interpolation=cv2.INTER_LINEAR)
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def smaller(self):
getpic = cv2.imread('./tempPic.png') # 图像缩小
res = cv2.resize(getpic, None, fx=3/4, fy=3/4, interpolation=cv2.INTER_LINEAR)
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def oilpainting(self):
img = cv2.imread('./tempPic.png', 1) # 油画滤镜
dst = cv2.xphoto.oilPainting(img, 3, 1)
cv2.imwrite("./tempPic.png", dst)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def watercolor(self):
img = cv2.imread('./tempPic.png', 1) # 水彩滤镜
dst =cv2.stylization(img, sigma_s=200, sigma_r=0.4)
cv2.imwrite("./tempPic.png", dst)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def turngrey(self):
img = cv2.imread('./tempPic.png',cv2.IMREAD_GRAYSCALE) # 灰度图像
cv2.imwrite("./tempPic.png", img)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def mirror(self):
img = cv2.imread('./tempPic.png', 1) # 左右镜像
res = cv2.flip(img, 1)
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def up(self):
img = cv2.imread('./tempPic.png', 1) # 图像上移
rows, cols, channels = img.shape
M = np.float32([[1, 0, 0], [0, 1, -10]])
res = cv2.warpAffine(img, M, (cols, rows))
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def down(self):
img = cv2.imread('./tempPic.png', 1) # 图像下移
rows, cols, channels = img.shape
M = np.float32([[1, 0, 0], [0, 1, 10]])
res = cv2.warpAffine(img, M, (cols, rows))
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def left(self):
img = cv2.imread('./tempPic.png', 1) # 图像左移
rows, cols, channels = img.shape
M = np.float32([[1, 0, -10], [0, 1, 0]])
res = cv2.warpAffine(img, M, (cols, rows))
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def right(self):
img = cv2.imread('./tempPic.png', 1) # 图像右移
rows, cols, channels = img.shape
M = np.float32([[1, 0, 10], [0, 1, 0]])
res = cv2.warpAffine(img, M, (cols, rows))
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def edge(self):
img = cv2.imread('./tempPic.png', 1) # Sobel边缘检测
img1 = cv2.resize(img, dsize=None, fx=1, fy=1)
img2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
img3 = cv2.Sobel(img2, cv2.CV_64F, 0, 1, ksize=5)
cv2.imwrite("./tempPic.png", img3)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def denoise(self):
img = cv2.imread('./tempPic.png', 1) # 图片降噪
dst = cv2.fastNlMeansDenoisingColored(img, None, 3, 3, 7, 21)
cv2.imwrite('./tempPic.png', dst)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def erosion(self):
img = cv2.imread('./tempPic.png', 1) # 图片腐蚀
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
dst = cv2.erode(img, kernel)
cv2.imwrite('./tempPic.png', dst)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def dilation(self):
img = cv2.imread('./tempPic.png', 1) # 图片膨胀
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
dst = cv2.dilate(img, kernel)
cv2.imwrite('./tempPic.png', dst)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
qapp = QApplication(sys.argv)
app = Ui_MainWindow()
app.show()
sys.exit(qapp.exec_())
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtWidgets import QFileDialog
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import *
import sys
import os
import argparse
import cv2
import numpy as np
class Ui_MainWindow(QMainWindow):
def __init__(self):
super(Ui_MainWindow,self).__init__()
self.setupUi(self)
self.retranslateUi(self)
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1304, 746)
self.centralWidget = QtWidgets.QWidget(MainWindow)
self.centralWidget.setObjectName("centralWidget")
self.toolbar = QtWidgets.QToolBox(self.centralWidget)
self.toolbar.setGeometry(QtCore.QRect(1040, 0, 251, 531))
self.toolbar.setFrameShadow(QtWidgets.QFrame.Sunken)
self.toolbar.setObjectName("toolbar")
self.basicOperation = QtWidgets.QWidget()
self.basicOperation.setGeometry(QtCore.QRect(0, 0, 251, 375))
self.basicOperation.setObjectName("basicOperation")
self.rotateButton = QtWidgets.QPushButton(self.basicOperation)
self.rotateButton.setGeometry(QtCore.QRect(80, 170, 112, 34))
self.rotateButton.setObjectName("rotateButton")
self.rotateButton.clicked.connect(self.rotate) # 旋转信息槽
self.greyButton = QtWidgets.QPushButton(self.basicOperation)
self.greyButton.setGeometry(QtCore.QRect(80, 220, 112, 34))
self.greyButton.setObjectName("greyButton")
self.greyButton.clicked.connect(self.turngrey) # 灰度图像信息槽
self.mirrorButton = QtWidgets.QPushButton(self.basicOperation)
self.mirrorButton.setGeometry(QtCore.QRect(80, 270, 112, 34))
self.mirrorButton.setObjectName("mirrorButton")
self.mirrorButton.clicked.connect(self.mirror) # 镜像信息槽
self.biggerButton = QtWidgets.QPushButton(self.basicOperation)
self.biggerButton.setGeometry(QtCore.QRect(40, 20, 75, 23))
self.biggerButton.setObjectName("biggerButton")
self.biggerButton.clicked.connect(self.bigger) # 放大信息槽
self.smallerButton = QtWidgets.QPushButton(self.basicOperation)
self.smallerButton.setGeometry(QtCore.QRect(150, 20, 75, 23))
self.smallerButton.setObjectName("smallerButton")
self.smallerButton.clicked.connect(self.smaller)# 缩小信息槽
self.upButton = QtWidgets.QPushButton(self.basicOperation)
self.upButton.setGeometry(QtCore.QRect(40, 70, 75, 23))
self.upButton.setObjectName("upButton")
self.upButton.clicked.connect(self.up) # 上移信息槽
self.downButton = QtWidgets.QPushButton(self.basicOperation)
self.downButton.setGeometry(QtCore.QRect(150, 70, 75, 23))
self.downButton.setObjectName("downButton")
self.downButton.clicked.connect(self.down) # 下移信息槽
self.leftButton = QtWidgets.QPushButton(self.basicOperation)
self.leftButton.setGeometry(QtCore.QRect(40, 110, 75, 23))
self.leftButton.setObjectName("leftButton")
self.leftButton.clicked.connect(self.left) # 左移信息槽
self.rightButton = QtWidgets.QPushButton(self.basicOperation)
self.rightButton.setGeometry(QtCore.QRect(150, 110, 75, 23))
self.rightButton.setObjectName("rightButton")
self.rightButton.clicked.connect(self.right) # 右移信息槽
self.toolbar.addItem(self.basicOperation, "")
self.edgeDitect = QtWidgets.QWidget()
self.edgeDitect.setGeometry(QtCore.QRect(0, 0, 98, 28))
self.edgeDitect.setObjectName("edgeDitect")
self.edgeButton_4 = QtWidgets.QPushButton(self.edgeDitect)
self.edgeButton_4.setGeometry(QtCore.QRect(70, 20, 112, 34))
self.edgeButton_4.setObjectName("edgeButton_4")
self.edgeButton_4.clicked.connect(self.edge) # 边缘检测信息槽
self.toolbar.addItem(self.edgeDitect, "")
self.enhance = QtWidgets.QWidget()
self.enhance.setGeometry(QtCore.QRect(0, 0, 98, 28))
self.enhance.setObjectName("enhance")
self.sharpenButton = QtWidgets.QPushButton(self.enhance)
self.sharpenButton.setGeometry(QtCore.QRect(80, 10, 112, 34))
self.sharpenButton.setObjectName("sharpenButton")
self.sharpenButton.clicked.connect(self.sharpen) # 锐化信息槽
self.smoothingButton = QtWidgets.QPushButton(self.enhance)
self.smoothingButton.setGeometry(QtCore.QRect(80, 60, 112, 34))
self.smoothingButton.setObjectName("smoothingButton")
self.smoothingButton.clicked.connect(self.smoothing) # 平滑信息槽
self.toolbar.addItem(self.enhance, "")
self.noiseReduction = QtWidgets.QWidget()
self.noiseReduction.setGeometry(QtCore.QRect(0, 0, 98, 28))
self.noiseReduction.setObjectName("noiseReduction")
self.denoiseButton = QtWidgets.QPushButton(self.noiseReduction)
self.denoiseButton.setGeometry(QtCore.QRect(80, 20, 112, 34))
self.denoiseButton.setObjectName("denoiseButton")
self.denoiseButton.clicked.connect(self.denoise) # 降噪信息槽
self.toolbar.addItem(self.noiseReduction, "")
self.morphology = QtWidgets.QWidget()
self.morphology.setGeometry(QtCore.QRect(0, 0, 98, 28))
self.morphology.setObjectName("morphology")
self.erosionButton = QtWidgets.QPushButton(self.morphology)
self.erosionButton.setGeometry(QtCore.QRect(90, 10, 91, 31))
self.erosionButton.setObjectName("erosionButton")
self.erosionButton.clicked.connect(self.erosion) # 腐蚀信息槽
self.dilationButton = QtWidgets.QPushButton(self.morphology)
self.dilationButton.setGeometry(QtCore.QRect(90, 70, 91, 31))
self.dilationButton.setObjectName("dilationButton")
self.dilationButton.clicked.connect(self.dilation)# 膨胀信息槽
self.toolbar.addItem(self.morphology, "")
self.filter = QtWidgets.QWidget()
self.filter.setGeometry(QtCore.QRect(0, 0, 251, 305))
self.filter.setObjectName("filter")
self.oilpaintingButton = QtWidgets.QPushButton(self.filter)
self.oilpaintingButton.setGeometry(QtCore.QRect(70, 20, 111, 31))
self.oilpaintingButton.setObjectName("oilpaintingButton")
self.oilpaintingButton.clicked.connect(self.oilpainting) # 油画滤镜信息槽
self.watercolorButton = QtWidgets.QPushButton(self.filter)
self.watercolorButton.setGeometry(QtCore.QRect(70, 90, 111, 31))
self.watercolorButton.setObjectName("watercolorButton")
self.watercolorButton.clicked.connect(self.watercolor) # 水彩滤镜信息槽
self.toolbar.addItem(self.filter, "")
self.saveButton = QtWidgets.QPushButton(self.centralWidget)
self.saveButton.setGeometry(QtCore.QRect(1120, 540, 112, 34))
self.saveButton.setObjectName("saveButton")
self.saveButton.clicked.connect(self.save) # 保存信息槽
self.picture = QtWidgets.QLabel(self.centralWidget)
self.picture.setGeometry(QtCore.QRect(20, 10, 1011, 671))
self.picture.setObjectName("picture")
MainWindow.setCentralWidget(self.centralWidget)
self.menuBar = QtWidgets.QMenuBar(MainWindow)
self.menuBar.setGeometry(QtCore.QRect(0, 0, 1304, 22))
self.menuBar.setObjectName("menuBar")
self.file = QtWidgets.QMenu(self.menuBar)
self.file.setObjectName("file")
MainWindow.setMenuBar(self.menuBar)
self.mainToolBar = QtWidgets.QToolBar(MainWindow)
self.mainToolBar.setObjectName("mainToolBar")
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
self.statusBar = QtWidgets.QStatusBar(MainWindow)
self.statusBar.setObjectName("statusBar")
MainWindow.setStatusBar(self.statusBar)
self.actionOpen_pic = QtWidgets.QAction(MainWindow)
self.actionOpen_pic.setObjectName("actionOpen_pic")
self.actionOpen_pic.triggered.connect(self.openpic) # 打开图片信息槽
self.file.addAction(self.actionOpen_pic)
self.menuBar.addAction(self.file.menuAction())
self.retranslateUi(MainWindow)
self.toolbar.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.rotateButton.setText(_translate("MainWindow", "旋转"))
self.greyButton.setText(_translate("MainWindow", "转为灰度图像"))
self.mirrorButton.setText(_translate("MainWindow", "镜像"))
self.biggerButton.setText(_translate("MainWindow", "放大"))
self.smallerButton.setText(_translate("MainWindow", "缩小"))
self.upButton.setText(_translate("MainWindow", "上移"))
self.downButton.setText(_translate("MainWindow", "下移"))
self.leftButton.setText(_translate("MainWindow", "左移"))
self.rightButton.setText(_translate("MainWindow", "右移"))
self.toolbar.setItemText(self.toolbar.indexOf(self.basicOperation), _translate("MainWindow", "图像基本操作"))
self.edgeButton_4.setText(_translate("MainWindow", "边缘检测"))
self.toolbar.setItemText(self.toolbar.indexOf(self.edgeDitect), _translate("MainWindow", "边缘检测"))
self.sharpenButton.setText(_translate("MainWindow", "图像锐化"))
self.smoothingButton.setText(_translate("MainWindow", "图像平滑"))
self.toolbar.setItemText(self.toolbar.indexOf(self.enhance), _translate("MainWindow", "图像增强"))
self.denoiseButton.setText(_translate("MainWindow", "去除噪声"))
self.toolbar.setItemText(self.toolbar.indexOf(self.noiseReduction), _translate("MainWindow", "噪声去除"))
self.erosionButton.setText(_translate("MainWindow", "图像腐蚀"))
self.dilationButton.setText(_translate("MainWindow", "图像膨胀"))
self.toolbar.setItemText(self.toolbar.indexOf(self.morphology), _translate("MainWindow", "图像形态学操作"))
self.oilpaintingButton.setText(_translate("MainWindow", "油画滤镜"))
self.watercolorButton.setText(_translate("MainWindow", "水彩滤镜"))
self.toolbar.setItemText(self.toolbar.indexOf(self.filter), _translate("MainWindow", "添加滤镜"))
self.saveButton.setText(_translate("MainWindow", "保存修改"))
self.picture.setText(_translate("MainWindow", ""))
self.file.setTitle(_translate("MainWindow", "文件"))
self.actionOpen_pic.setText(_translate("MainWindow", "打开图片"))
def openpic(self): #打开需要修改的图像
print(cv2.__file__)
address = QFileDialog.getOpenFileName(self, "选取图片", "./", "Image files(*.png *.jpg *.jpeg *.gif);;all files(*.*)")
self.filename = address[0]
if self.filename:
print(self.filename)
self.pic = QtGui.QPixmap(self.filename)
self.picture.setPixmap(self.pic)
self.newPic = cv2.imread(self.filename)
# print("1")
cv2.imwrite('./tempPic.png', self.newPic)
# print("2")
def save(self): # 保存修改后的图像
saveAddress = QFileDialog.getSaveFileName(self, "保存文件", "./", "Image files(*.png *.jpg *.jpeg *.gif);;all files(*.*)")
print(saveAddress[0])
if saveAddress[0]:
self.newPic = cv2.imread('./tempPic.png')
cv2.imwrite(saveAddress[0], self.newPic)
def rotate(self):
img = cv2.imread('./tempPic.png') # 图像旋转
res = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def smoothing(self):
getpic = cv2.imread('./tempPic.png') # 图像平滑
smoothpic = cv2.bilateralFilter(getpic, 5, 255, 10) # 双边滤波
cv2.imwrite("./tempPic.png", smoothpic)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def sharpen(self):
getpic = cv2.imread('./tempPic.png') # 图像锐化
sharpen_op = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], dtype=np.float32)
sharpen_image = cv2.filter2D(getpic, cv2.CV_32F, sharpen_op)
sharpen_image = cv2.convertScaleAbs(sharpen_image)
cv2.imwrite("./tempPic.png", sharpen_image)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def bigger(self):
getpic = cv2.imread('./tempPic.png') # 图像放大
res = cv2.resize(getpic, None, fx=1.3, fy=1.3, interpolation=cv2.INTER_LINEAR)
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def smaller(self):
getpic = cv2.imread('./tempPic.png') # 图像缩小
res = cv2.resize(getpic, None, fx=3/4, fy=3/4, interpolation=cv2.INTER_LINEAR)
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def oilpainting(self):
img = cv2.imread('./tempPic.png', 1) # 油画滤镜
dst = cv2.xphoto.oilPainting(img, 3, 1)
cv2.imwrite("./tempPic.png", dst)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def watercolor(self):
img = cv2.imread('./tempPic.png', 1) # 水彩滤镜
dst =cv2.stylization(img, sigma_s=200, sigma_r=0.4)
cv2.imwrite("./tempPic.png", dst)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def turngrey(self):
img = cv2.imread('./tempPic.png',cv2.IMREAD_GRAYSCALE) # 灰度图像
cv2.imwrite("./tempPic.png", img)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def mirror(self):
img = cv2.imread('./tempPic.png', 1) # 左右镜像
res = cv2.flip(img, 1)
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def up(self):
img = cv2.imread('./tempPic.png', 1) # 图像上移
rows, cols, channels = img.shape
M = np.float32([[1, 0, 0], [0, 1, -10]])
res = cv2.warpAffine(img, M, (cols, rows))
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def down(self):
img = cv2.imread('./tempPic.png', 1) # 图像下移
rows, cols, channels = img.shape
M = np.float32([[1, 0, 0], [0, 1, 10]])
res = cv2.warpAffine(img, M, (cols, rows))
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def left(self):
img = cv2.imread('./tempPic.png', 1) # 图像左移
rows, cols, channels = img.shape
M = np.float32([[1, 0, -10], [0, 1, 0]])
res = cv2.warpAffine(img, M, (cols, rows))
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def right(self):
img = cv2.imread('./tempPic.png', 1) # 图像右移
rows, cols, channels = img.shape
M = np.float32([[1, 0, 10], [0, 1, 0]])
res = cv2.warpAffine(img, M, (cols, rows))
cv2.imwrite("./tempPic.png", res)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def edge(self):
img = cv2.imread('./tempPic.png', 1) # Sobel边缘检测
img1 = cv2.resize(img, dsize=None, fx=1, fy=1)
img2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
img3 = cv2.Sobel(img2, cv2.CV_64F, 0, 1, ksize=5)
cv2.imwrite("./tempPic.png", img3)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def denoise(self):
img = cv2.imread('./tempPic.png', 1) # 图片降噪
dst = cv2.fastNlMeansDenoisingColored(img, None, 3, 3, 7, 21)
cv2.imwrite('./tempPic.png', dst)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def erosion(self):
img = cv2.imread('./tempPic.png', 1) # 图片腐蚀
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
dst = cv2.erode(img, kernel)
cv2.imwrite('./tempPic.png', dst)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
def dilation(self):
img = cv2.imread('./tempPic.png', 1) # 图片膨胀
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
dst = cv2.dilate(img, kernel)
cv2.imwrite('./tempPic.png', dst)
self.newPic = cv2.imread('./tempPic.png')
self.pic = QtGui.QPixmap('./tempPic.png')
self.picture.setPixmap(self.pic)
qapp = QApplication(sys.argv)
app = Ui_MainWindow()
app.show()
sys.exit(qapp.exec_())

Loading…
Cancel
Save