栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

PyQt5高速入门(图像处理界面),期末作业小帮手(下)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PyQt5高速入门(图像处理界面),期末作业小帮手(下)

在上一部分中(PyQt5高速入门,期末作业小帮手(上)),我们实现了界面设计与.py文件转化,下面我们来看看具体的代码实现部分。

代码部分

转换后的.py文件代码如下:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        ## 设计主界面
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1125, 798)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(40, 10, 81, 18))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(580, 8, 121, 20))
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(160, 420, 36, 34))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(581, 431, 76, 18))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_5.setFont(font)
        self.label_5.setObjectName("label_5")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(20, 420, 112, 34))
        self.pushButton.setObjectName("pushButton")
        self.layoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.layoutWidget.setGeometry(QtCore.QRect(200, 420, 289, 34))
        self.layoutWidget.setObjectName("layoutWidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.radioButton_2 = QtWidgets.QRadioButton(self.layoutWidget)
        self.radioButton_2.setObjectName("radioButton_2")
        self.horizontalLayout.addWidget(self.radioButton_2)
        self.radioButton = QtWidgets.QRadioButton(self.layoutWidget)
        self.radioButton.setObjectName("radioButton")
        self.horizontalLayout.addWidget(self.radioButton)
        self.radioButton_3 = QtWidgets.QRadioButton(self.layoutWidget)
        self.radioButton_3.setObjectName("radioButton_3")
        self.horizontalLayout.addWidget(self.radioButton_3)
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(20, 610, 112, 34))
        self.pushButton_2.setObjectName("pushButton_2")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(30, 50, 441, 341))
        self.label_6.setObjectName("label_6")
        self.label_7 = QtWidgets.QLabel(self.centralwidget)
        self.label_7.setGeometry(QtCore.QRect(570, 50, 441, 341))
        self.label_7.setObjectName("label_7")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(580, 480, 112, 34))
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(580, 550, 112, 34))
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(580, 620, 112, 34))
        self.pushButton_5.setObjectName("pushButton_5")
        self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_6.setGeometry(QtCore.QRect(580, 700, 112, 34))
        self.pushButton_6.setObjectName("pushButton_6")
        self.label_8 = QtWidgets.QLabel(self.centralwidget)
        self.label_8.setGeometry(QtCore.QRect(750, 430, 95, 18))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_8.setFont(font)
        self.label_8.setObjectName("label_8")
        self.textEdit_jz1 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_jz1.setGeometry(QtCore.QRect(750, 480, 41, 41))
        self.textEdit_jz1.setObjectName("textEdit_jz1")
        self.textEdit_fk1 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_fk1.setGeometry(QtCore.QRect(750, 550, 41, 41))
        self.textEdit_fk1.setObjectName("textEdit_fk1")
        self.textEdit_zh = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_zh.setGeometry(QtCore.QRect(750, 620, 41, 41))
        self.textEdit_zh.setObjectName("textEdit_zh")
        self.textEdit_gs1 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_gs1.setGeometry(QtCore.QRect(750, 700, 41, 41))
        self.textEdit_gs1.setObjectName("textEdit_gs1")
        self.label_9 = QtWidgets.QLabel(self.centralwidget)
        self.label_9.setGeometry(QtCore.QRect(890, 670, 147, 18))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_9.setFont(font)
        self.label_9.setObjectName("label_9")
        self.textEdit_xbzc = QtWidgets.QTextEdit(self.centralwidget)  #x轴方向标准差
        self.textEdit_xbzc.setGeometry(QtCore.QRect(900, 700, 41, 41))
        self.textEdit_xbzc.setObjectName("textEdit_xbzc")
        self.textEdit_jyh = QtWidgets.QTextEdit(self.centralwidget)   #均一化
        self.textEdit_jyh.setGeometry(QtCore.QRect(930, 550, 41, 41))
        self.textEdit_jyh.setObjectName("textEdit_jyh")
        self.label_10 = QtWidgets.QLabel(self.centralwidget)
        self.label_10.setGeometry(QtCore.QRect(920, 530, 71, 20))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_10.setFont(font)
        self.label_10.setObjectName("label_10")
        self.textEdit_jz2 = QtWidgets.QTextEdit(self.centralwidget) #均值滤波
        self.textEdit_jz2.setGeometry(QtCore.QRect(810, 480, 41, 41))
        self.textEdit_jz2.setObjectName("textEdit_jz2")
        self.textEdit_fk2 = QtWidgets.QTextEdit(self.centralwidget)   #方框滤波
        self.textEdit_fk2.setGeometry(QtCore.QRect(810, 550, 41, 41))
        self.textEdit_fk2.setObjectName("textEdit_fk2")
        self.textEdit_gs2 = QtWidgets.QTextEdit(self.centralwidget)   #高斯滤波
        self.textEdit_gs2.setGeometry(QtCore.QRect(810, 700, 41, 41))
        self.textEdit_gs2.setObjectName("textEdit_gs2")
        self.textEdit_ybzc = QtWidgets.QTextEdit(self.centralwidget)  #y轴方向标准差
        self.textEdit_ybzc.setGeometry(QtCore.QRect(960, 700, 41, 41))
        self.textEdit_ybzc.setObjectName("textEdit_ybzc")
        self.line = QtWidgets.QFrame(self.centralwidget)
        self.line.setGeometry(QtCore.QRect(580, 450, 421, 16))
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.line_2 = QtWidgets.QFrame(self.centralwidget)
        self.line_2.setGeometry(QtCore.QRect(580, 520, 421, 16))
        self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_2.setObjectName("line_2")
        self.line_3 = QtWidgets.QFrame(self.centralwidget)
        self.line_3.setGeometry(QtCore.QRect(580, 590, 421, 16))
        self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_3.setObjectName("line_3")
        self.line_4 = QtWidgets.QFrame(self.centralwidget)
        self.line_4.setGeometry(QtCore.QRect(580, 660, 421, 16))
        self.line_4.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_4.setObjectName("line_4")
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(160, 500, 306, 24))
        self.widget.setObjectName("widget")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget)
        self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label_4 = QtWidgets.QLabel(self.widget)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_4.setFont(font)
        self.label_4.setObjectName("label_4")
        self.horizontalLayout_2.addWidget(self.label_4)
        self.radioButton_4 = QtWidgets.QRadioButton(self.widget)
        self.radioButton_4.setObjectName("radioButton_4")
        self.horizontalLayout_2.addWidget(self.radioButton_4)
        self.radioButton_5 = QtWidgets.QRadioButton(self.widget)
        self.radioButton_5.setObjectName("radioButton_5")
        self.horizontalLayout_2.addWidget(self.radioButton_5)
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.actionOpen = QtWidgets.QAction(MainWindow)
        self.actionOpen.setObjectName("actionOpen")
        self.actionSave = QtWidgets.QAction(MainWindow)
        self.actionSave.setObjectName("actionSave")

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):  #命名
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "源图片")) #文字标题
        self.label_2.setText(_translate("MainWindow", "处理后图片"))  #文字标题
        self.label_3.setText(_translate("MainWindow", "模式"))  #文字标题
        self.label_5.setText(_translate("MainWindow", "滤波处理")) #文字标题
        self.pushButton.setText(_translate("MainWindow", "打开图像")) #打开图像按钮
        self.radioButton_2.setText(_translate("MainWindow", "灰度"))  #图片类型单选按钮
        self.radioButton.setText(_translate("MainWindow", "彩色"))   #图片类型单选按钮
        self.radioButton_3.setText(_translate("MainWindow", "二值化"))   #图片类型单选按钮
        self.pushButton_2.setText(_translate("MainWindow", "保存图像"))   #保存图像按钮
        self.label_6.setText(_translate("MainWindow", "源图像"))  #用来显示待处理图像的框
        self.label_7.setText(_translate("MainWindow", "处理后图像")) #用来显示处理后图像的框
        self.pushButton_3.setText(_translate("MainWindow", "均值滤波")) #均值滤波功能按钮
        self.pushButton_4.setText(_translate("MainWindow", "方框滤波")) #方框滤波功能按钮
        self.pushButton_5.setText(_translate("MainWindow", "中值滤波"))  #中值滤波功能按钮
        self.pushButton_6.setText(_translate("MainWindow", "高斯滤波"))  #高斯滤波功能按钮
        self.label_8.setText(_translate("MainWindow", "模糊核大小")) #文字标题
        self.textEdit_jz1.setToolTip(_translate("MainWindow", "

正奇数

")) #提示设置 self.textEdit_fk1.setToolTip(_translate("MainWindow", "

正奇数

")) #提示设置 self.textEdit_zh.setToolTip(_translate("MainWindow", "

正奇数

")) #提示设置 self.textEdit_gs1.setToolTip(_translate("MainWindow", "

正奇数

")) #提示设置 self.label_9.setText(_translate("MainWindow", "高斯核标准差")) #文字标题 self.textEdit_xbzc.setToolTip(_translate("MainWindow", "

x轴方向(必选)

")) #提示设置 self.textEdit_jyh.setToolTip(_translate("MainWindow", "

是(1)否(0)

")) #提示设置 self.label_10.setText(_translate("MainWindow", "均一化")) #文字标题 self.textEdit_jz2.setToolTip(_translate("MainWindow", "

正奇数

")) #提示设置 self.textEdit_fk2.setToolTip(_translate("MainWindow", "

正奇数

")) #提示设置 self.textEdit_gs2.setToolTip(_translate("MainWindow", "

正奇数

")) #提示设置 self.textEdit_ybzc.setToolTip(_translate("MainWindow", "

y轴方向(可选)

")) #提示设置 self.label_4.setText(_translate("MainWindow", "处理对象")) #文字标题 self.radioButton_4.setText(_translate("MainWindow", "源图像")) #处理对象选择单选按钮 self.radioButton_5.setText(_translate("MainWindow", "处理后图像")) #处理对象选择单选按钮 self.actionOpen.setText(_translate("MainWindow", "打开图像")) self.actionOpen.setShortcut(_translate("MainWindow", "Ctrl+A")) self.actionSave.setText(_translate("MainWindow", "保存图像")) self.actionSave.setShortcut(_translate("MainWindow", "Ctrl+S"))

我们的用户界面只需要在上述代码中进行改动即可。首先,在代码开头导入我们需要的库:

# 导入所需库
from PyQt5 import QtCore, QtGui, QtWidgets  
from PyQt5.QtCore import QFileInfo
from PyQt5.QtWidgets import QFileDialog

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import cv2
import numpy as np
import math

然后,在Ui_MainWindow类中写入我们需要实现功能的函数:

1. 我们先定义打开、保存文件的函数。要实现将读取的文件显示在我们的QLabel中,只需使用self.QLabelName.setPixmap(PictureName)即可,这里的QLabelName就是我们想要指定显示的QLabel框的名称,如果已经不记得类的名称了,可以在retranslateUi函数中查看一下,或者回到Qt Designer看看。

class Ui_MainWindow(object):
    ... 
    ## 定义功能函数
    #打开文件   
    def openfile(self):
        global fname
        #定义文件读取函数,解决中文路径读取错误的问题
        def cv_imread(file_path):
            cv_img = cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)
            return cv_img
        fname, imgType = QFileDialog.getOpenFileName(None, "打开图片", "", "*;;*.png;;All Files(*)") 
        img = cv_imread(fname)  # opencv读取图片
        res = cv2.resize(img, (441, 341), interpolation=cv2.INTER_CUBIC) #用cv2.resize设置图片大小
        self.img_o = cv2.cvtColor(res, cv2.COLOR_BGR2RGB)  # opencv读取的bgr格式图片转换成rgb格式
        _image = QtGui.QImage(self.img_o[:], self.img_o.shape[1], self.img_o.shape[0], self.img_o.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式
        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_6.setPixmap(jpg_out)  # 设置图片显示
        
    #保存文件   
    def savefile(self):
        #fd,fp  = QFileDialog.getSaveFileName(self.img2, "保存图片", "", "*;;*.png;;All Files(*)")
        cv2.imwrite('result.jpg',self.img2)
    
    

 2. 图像类型选择函数,其中二值化模式可通过滑动条选择阈值,但选择阈值后,必须按"q"或者"Esc"退出:

class Ui_MainWindow(object):
    ... 
    #选择图像为彩色模式
    def color(self):
        global fname
        #定义文件读取函数,解决中文路径读取错误的问题
        def cv_imread(file_path):
            cv_img = cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)
            return cv_img
        img = cv_imread(fname)  # opencv读取图片
        res = cv2.resize(img, (441, 341), interpolation=cv2.INTER_CUBIC) #用cv2.resize设置图片大小
        self.img2 = cv2.cvtColor(res, cv2.COLOR_BGR2RGB)  # opencv读取的bgr格式图片转换成rgb格式
        _image = QtGui.QImage(self.img2[:], self.img2.shape[1], self.img2.shape[0], self.img2.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式
        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_7.setPixmap(jpg_out)  # 设置图片显示
    
    #选择图像为二值化模式
    def Binarization(self):
        global fname
        #定义文件读取函数,解决中文路径读取错误的问题
        def cv_imread(file_path):
            cv_img = cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)
            return cv_img
        img = cv_imread(fname)
        img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
        #二值化,需要注意的是,必须按"q"或者"Esc"退出
        #设置窗口
        cv2.namedWindow('imgBin')
        #定义回调函数
        def nothing(x):
            pass
        #创建滑动条,控制threshold
        cv2.createTrackbar('threshold','imgBin',0,255,nothing)
        while(1):
            #返回滑动条所在位置的值
            threshold=cv2.getTrackbarPos('threshold','imgBin')
            #二值化处理 
            ret, imgBin = cv2.threshold(img.copy() ,threshold, 255, cv2.THRESH_BINARY)  
            #显示图片
            cv2.imshow('imgBin',imgBin)
            if cv2.waitKey(1)==ord('q') or cv2.waitKey(1)==27:  #按q或Esc退出
                break
        cv2.destroyAllWindows()
        
        res = cv2.resize(imgBin, (441, 341), interpolation=cv2.INTER_CUBIC)
        self.img2 = cv2.cvtColor(res, cv2.COLOR_BGR2RGB)  # opencv读取的bgr格式图片转换成rgb格式
        _image = QtGui.QImage(self.img2[:], self.img2.shape[1], self.img2.shape[0], self.img2.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式
        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_7.setPixmap(jpg_out)
        
    #选择图像为灰度模式    
    def gray(self):
        global fname
        #定义文件读取函数,解决中文路径读取错误的问题
        def cv_imread(file_path):
            cv_img = cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)
            return cv_img
        img = cv_imread(fname)
        img= cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        res = cv2.resize(img, (441, 341), interpolation=cv2.INTER_CUBIC)
        self.img2 = cv2.cvtColor(res, cv2.COLOR_BGR2RGB)  # opencv读取的bgr格式图片转换成rgb格式
        _image = QtGui.QImage(self.img2[:], self.img2.shape[1], self.img2.shape[0], self.img2.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式
        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_7.setPixmap(jpg_out) 

其中,cv2.resize()实现将图像变成显示框的大小(setupUi函数中,QLabel的后两个参数即大小:self.label_7.setGeometry(QtCore.QRect(570, 50, 441, 341)) ),label_7则是我们的“处理后对象”QLabel显示框。

3. 通过一点小操作,实现选择处理对象为源图像或者处理后图像(后续滤波操作,均输入img3,输出img2即可实现),并将处理对象显示在我们的“源图像”QLabel框中。

class Ui_MainWindow(object):
    ...    
    #选择处理对象为源图像
    def yuan(self):    #使用self.img3进行后续操作
        self.img3 = self.img_o
        _image = QtGui.QImage(self.img_o[:], self.img_o.shape[1], self.img_o.shape[0], self.img_o.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式
        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_6.setPixmap(jpg_out)
    
    #选择处理对象为处理后的图像
    def chuli(self):
        self.img3 = self.img2
        _image = QtGui.QImage(self.img2[:], self.img2.shape[1], self.img2.shape[0], self.img2.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式
        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_6.setPixmap(jpg_out)  

4. 滤波操作函数:

class Ui_MainWindow(object):
    ...     
    #均值滤波   
    def junzhi(self):
        img = cv2.cvtColor(self.img3, cv2.COLOR_BGR2GRAY)
        k1 = int(self.textEdit_jz1.toPlainText())  #将输入值赋给k1
        k2 = int(self.textEdit_jz2.toPlainText())
        kSize = (k1, k2)
        self.img2 = cv2.blur(img,kSize)
        im = cv2.cvtColor(self.img2, cv2.COLOR_BGR2RGB)
        self.img2 = im
        _image = QtGui.QImage(im[:], im.shape[1], im.shape[0], im.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式

        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_7.setPixmap(jpg_out) 
        
    #高斯滤波
    def gaussian(self):
        img = cv2.cvtColor(self.img3, cv2.COLOR_BGR2GRAY)
        k1 = int(self.textEdit_gs1.toPlainText())
        k2 = int(self.textEdit_gs2.toPlainText())
        kSize = (k1, k2)
        sigmaX = int(self.textEdit_xbzc.toPlainText())
        sigmaY = self.textEdit_ybzc.toPlainText()
        if len(sigmaY) == 0:  #实现输入框的可选填入
            self.img2 = cv2.GaussianBlur(img, kSize, sigmaX)
        else:
            self.img2 = cv2.GaussianBlur(img, kSize, sigmaX,int(sigmaY))
        im = cv2.cvtColor(self.img2, cv2.COLOR_BGR2RGB)
        self.img2 = im
        _image = QtGui.QImage(im[:], im.shape[1], im.shape[0], im.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式

        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_7.setPixmap(jpg_out) 
        
    #中值滤波
    def median(self):
        img = cv2.cvtColor(self.img3, cv2.COLOR_BGR2GRAY)
        kSize = int(self.textEdit_zh.toPlainText())
        self.img2 = cv2.medianBlur(img, kSize)
        im = cv2.cvtColor(self.img2, cv2.COLOR_BGR2RGB)
        self.img2 = im
        _image = QtGui.QImage(im[:], im.shape[1], im.shape[0], im.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式

        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_7.setPixmap(jpg_out)    
        
    #方框滤波
    def boxblur(self):
        img = cv2.cvtColor(self.img3, cv2.COLOR_BGR2GRAY)
        k1 = int(self.textEdit_fk1.toPlainText())
        k2 = int(self.textEdit_fk2.toPlainText())
        kSize = (k1, k2)
        normalize = int(self.textEdit_jyh.toPlainText())
        self.img2 = cv2.boxFilter(img, -1, kSize, normalize)
        im = cv2.cvtColor(self.img2, cv2.COLOR_BGR2RGB)
        self.img2 = im
        _image = QtGui.QImage(im[:], im.shape[1], im.shape[0], im.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式

        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_7.setPixmap(jpg_out) 

通过self.textEditName.toPlainText()即可实现获取对应的输入框(textEditName)输入内容。

5. 函数写好后,在setupUi函数最后连接槽函数:

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
    ...        
        ## 连接槽函数
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.pushButton.clicked.connect(self.openfile)
        self.pushButton_2.clicked.connect(self.savefile)
        self.radioButton.clicked.connect(self.color)
        self.radioButton_2.clicked.connect(self.gray)
        self.radioButton_3.clicked.connect(self.Binarization)
        self.radioButton_4.clicked.connect(self.yuan)
        self.radioButton_5.clicked.connect(self.chuli)
        self.pushButton_3.clicked.connect(self.junzhi)
        self.pushButton_4.clicked.connect(self.boxblur)
        self.pushButton_5.clicked.connect(self.median)
        self.pushButton_6.clicked.connect(self.gaussian)

格式为:功能按钮类名.clicked.connect(函数名)。

至此,我们的界面就设计完成了!

最后,我们只需要输入:

app=QtWidgets.QApplication(sys.argv)
widget=QtWidgets.QMainWindow()
ui=Ui_MainWindow() 
ui.setupUi(widget)
widget.show()
sys.exit(app.exec_())

就可以运行我们的主界面了。

整体代码

整体代码如下:

# 导入所需库
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QFileInfo
from PyQt5.QtWidgets import QFileDialog
from PyQt5 import QtCore, QtGui, QtWidgets

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import cv2
import numpy as np
import math

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        ## 设计主界面
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1125, 798)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(40, 10, 81, 18))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(580, 8, 121, 20))
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(160, 420, 36, 34))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(581, 431, 76, 18))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_5.setFont(font)
        self.label_5.setObjectName("label_5")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(20, 420, 112, 34))
        self.pushButton.setObjectName("pushButton")
        self.layoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.layoutWidget.setGeometry(QtCore.QRect(200, 420, 289, 34))
        self.layoutWidget.setObjectName("layoutWidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.radioButton_2 = QtWidgets.QRadioButton(self.layoutWidget)
        self.radioButton_2.setObjectName("radioButton_2")
        self.horizontalLayout.addWidget(self.radioButton_2)
        self.radioButton = QtWidgets.QRadioButton(self.layoutWidget)
        self.radioButton.setObjectName("radioButton")
        self.horizontalLayout.addWidget(self.radioButton)
        self.radioButton_3 = QtWidgets.QRadioButton(self.layoutWidget)
        self.radioButton_3.setObjectName("radioButton_3")
        self.horizontalLayout.addWidget(self.radioButton_3)
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(20, 610, 112, 34))
        self.pushButton_2.setObjectName("pushButton_2")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(30, 50, 441, 341))
        self.label_6.setObjectName("label_6")
        self.label_7 = QtWidgets.QLabel(self.centralwidget)
        self.label_7.setGeometry(QtCore.QRect(570, 50, 441, 341))
        self.label_7.setObjectName("label_7")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(580, 480, 112, 34))
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(580, 550, 112, 34))
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(580, 620, 112, 34))
        self.pushButton_5.setObjectName("pushButton_5")
        self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_6.setGeometry(QtCore.QRect(580, 700, 112, 34))
        self.pushButton_6.setObjectName("pushButton_6")
        self.label_8 = QtWidgets.QLabel(self.centralwidget)
        self.label_8.setGeometry(QtCore.QRect(750, 430, 95, 18))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_8.setFont(font)
        self.label_8.setObjectName("label_8")
        self.textEdit_jz1 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_jz1.setGeometry(QtCore.QRect(750, 480, 41, 41))
        self.textEdit_jz1.setObjectName("textEdit_jz1")
        self.textEdit_fk1 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_fk1.setGeometry(QtCore.QRect(750, 550, 41, 41))
        self.textEdit_fk1.setObjectName("textEdit_fk1")
        self.textEdit_zh = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_zh.setGeometry(QtCore.QRect(750, 620, 41, 41))
        self.textEdit_zh.setObjectName("textEdit_zh")
        self.textEdit_gs1 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_gs1.setGeometry(QtCore.QRect(750, 700, 41, 41))
        self.textEdit_gs1.setObjectName("textEdit_gs1")
        self.label_9 = QtWidgets.QLabel(self.centralwidget)
        self.label_9.setGeometry(QtCore.QRect(890, 670, 147, 18))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_9.setFont(font)
        self.label_9.setObjectName("label_9")
        self.textEdit_xbzc = QtWidgets.QTextEdit(self.centralwidget)  #x轴方向标准差
        self.textEdit_xbzc.setGeometry(QtCore.QRect(900, 700, 41, 41))
        self.textEdit_xbzc.setObjectName("textEdit_xbzc")
        self.textEdit_jyh = QtWidgets.QTextEdit(self.centralwidget)   #均一化
        self.textEdit_jyh.setGeometry(QtCore.QRect(930, 550, 41, 41))
        self.textEdit_jyh.setObjectName("textEdit_jyh")
        self.label_10 = QtWidgets.QLabel(self.centralwidget)
        self.label_10.setGeometry(QtCore.QRect(920, 530, 71, 20))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_10.setFont(font)
        self.label_10.setObjectName("label_10")
        self.textEdit_jz2 = QtWidgets.QTextEdit(self.centralwidget) #均值滤波
        self.textEdit_jz2.setGeometry(QtCore.QRect(810, 480, 41, 41))
        self.textEdit_jz2.setObjectName("textEdit_jz2")
        self.textEdit_fk2 = QtWidgets.QTextEdit(self.centralwidget)   #方框滤波
        self.textEdit_fk2.setGeometry(QtCore.QRect(810, 550, 41, 41))
        self.textEdit_fk2.setObjectName("textEdit_fk2")
        self.textEdit_gs2 = QtWidgets.QTextEdit(self.centralwidget)   #高斯滤波
        self.textEdit_gs2.setGeometry(QtCore.QRect(810, 700, 41, 41))
        self.textEdit_gs2.setObjectName("textEdit_gs2")
        self.textEdit_ybzc = QtWidgets.QTextEdit(self.centralwidget)  #y轴方向标准差
        self.textEdit_ybzc.setGeometry(QtCore.QRect(960, 700, 41, 41))
        self.textEdit_ybzc.setObjectName("textEdit_ybzc")
        self.line = QtWidgets.QFrame(self.centralwidget)
        self.line.setGeometry(QtCore.QRect(580, 450, 421, 16))
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.line_2 = QtWidgets.QFrame(self.centralwidget)
        self.line_2.setGeometry(QtCore.QRect(580, 520, 421, 16))
        self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_2.setObjectName("line_2")
        self.line_3 = QtWidgets.QFrame(self.centralwidget)
        self.line_3.setGeometry(QtCore.QRect(580, 590, 421, 16))
        self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_3.setObjectName("line_3")
        self.line_4 = QtWidgets.QFrame(self.centralwidget)
        self.line_4.setGeometry(QtCore.QRect(580, 660, 421, 16))
        self.line_4.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_4.setObjectName("line_4")
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(160, 500, 306, 24))
        self.widget.setObjectName("widget")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget)
        self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label_4 = QtWidgets.QLabel(self.widget)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_4.setFont(font)
        self.label_4.setObjectName("label_4")
        self.horizontalLayout_2.addWidget(self.label_4)
        self.radioButton_4 = QtWidgets.QRadioButton(self.widget)
        self.radioButton_4.setObjectName("radioButton_4")
        self.horizontalLayout_2.addWidget(self.radioButton_4)
        self.radioButton_5 = QtWidgets.QRadioButton(self.widget)
        self.radioButton_5.setObjectName("radioButton_5")
        self.horizontalLayout_2.addWidget(self.radioButton_5)
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.actionOpen = QtWidgets.QAction(MainWindow)
        self.actionOpen.setObjectName("actionOpen")
        self.actionSave = QtWidgets.QAction(MainWindow)
        self.actionSave.setObjectName("actionSave")
        
        ## 连接槽函数
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.pushButton.clicked.connect(self.openfile)
        self.pushButton_2.clicked.connect(self.savefile)
        self.radioButton.clicked.connect(self.color)
        self.radioButton_2.clicked.connect(self.gray)
        self.radioButton_3.clicked.connect(self.Binarization)
        self.radioButton_4.clicked.connect(self.yuan)
        self.radioButton_5.clicked.connect(self.chuli)
        self.pushButton_3.clicked.connect(self.junzhi)
        self.pushButton_4.clicked.connect(self.boxblur)
        self.pushButton_5.clicked.connect(self.median)
        self.pushButton_6.clicked.connect(self.gaussian)
        
        
    
    ## 定义功能函数
    #打开文件   
    def openfile(self):
        global fname
        #定义文件读取函数,解决中文路径读取错误的问题
        def cv_imread(file_path):
            cv_img = cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)
            return cv_img
        fname, imgType = QFileDialog.getOpenFileName(None, "打开图片", "", "*;;*.png;;All Files(*)") 
        img = cv_imread(fname)  # opencv读取图片
        res = cv2.resize(img, (441, 341), interpolation=cv2.INTER_CUBIC) #用cv2.resize设置图片大小
        self.img_o = cv2.cvtColor(res, cv2.COLOR_BGR2RGB)  # opencv读取的bgr格式图片转换成rgb格式
        _image = QtGui.QImage(self.img_o[:], self.img_o.shape[1], self.img_o.shape[0], self.img_o.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式
        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_6.setPixmap(jpg_out)  # 设置图片显示
        
    #保存文件   
    def savefile(self):
        #fd,fp  = QFileDialog.getSaveFileName(self.img2, "保存图片", "", "*;;*.png;;All Files(*)")
        cv2.imwrite('result.jpg',self.img2)
    
    #选择处理对象为源图像
    def yuan(self):    #使用self.img3进行后续操作
        self.img3 = self.img_o
        _image = QtGui.QImage(self.img_o[:], self.img_o.shape[1], self.img_o.shape[0], self.img_o.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式
        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_6.setPixmap(jpg_out)
    
    #选择处理对象为处理后的图像
    def chuli(self):
        self.img3 = self.img2
        _image = QtGui.QImage(self.img2[:], self.img2.shape[1], self.img2.shape[0], self.img2.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式
        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_6.setPixmap(jpg_out)  
    
    #选择图像为彩色模式
    def color(self):
        global fname
        #定义文件读取函数,解决中文路径读取错误的问题
        def cv_imread(file_path):
            cv_img = cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)
            return cv_img
        img = cv_imread(fname)  # opencv读取图片
        res = cv2.resize(img, (441, 341), interpolation=cv2.INTER_CUBIC) #用cv2.resize设置图片大小
        self.img2 = cv2.cvtColor(res, cv2.COLOR_BGR2RGB)  # opencv读取的bgr格式图片转换成rgb格式
        _image = QtGui.QImage(self.img2[:], self.img2.shape[1], self.img2.shape[0], self.img2.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式
        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_7.setPixmap(jpg_out)  # 设置图片显示
    
    #选择图像为二值化模式
    def Binarization(self):
        global fname
        #定义文件读取函数,解决中文路径读取错误的问题
        def cv_imread(file_path):
            cv_img = cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)
            return cv_img
        img = cv_imread(fname)
        img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
        #二值化,需要注意的是,必须按"q"或者"Esc"退出
        #设置窗口
        cv2.namedWindow('imgBin')
        #定义回调函数
        def nothing(x):
            pass
        #创建滑动条,控制threshold
        cv2.createTrackbar('threshold','imgBin',0,255,nothing)
        while(1):
            #返回滑动条所在位置的值
            threshold=cv2.getTrackbarPos('threshold','imgBin')
            #二值化处理 
            ret, imgBin = cv2.threshold(img.copy() ,threshold, 255, cv2.THRESH_BINARY)  
            #显示图片
            cv2.imshow('imgBin',imgBin)
            if cv2.waitKey(1)==ord('q') or cv2.waitKey(1)==27:  #按q或Esc退出
                break
        cv2.destroyAllWindows()
        
        res = cv2.resize(imgBin, (441, 341), interpolation=cv2.INTER_CUBIC)
        self.img2 = cv2.cvtColor(res, cv2.COLOR_BGR2RGB)  # opencv读取的bgr格式图片转换成rgb格式
        _image = QtGui.QImage(self.img2[:], self.img2.shape[1], self.img2.shape[0], self.img2.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式
        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_7.setPixmap(jpg_out)
        
    #选择图像为灰度模式    
    def gray(self):
        global fname
        #定义文件读取函数,解决中文路径读取错误的问题
        def cv_imread(file_path):
            cv_img = cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)
            return cv_img
        img = cv_imread(fname)
        img= cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        res = cv2.resize(img, (441, 341), interpolation=cv2.INTER_CUBIC)
        self.img2 = cv2.cvtColor(res, cv2.COLOR_BGR2RGB)  # opencv读取的bgr格式图片转换成rgb格式
        _image = QtGui.QImage(self.img2[:], self.img2.shape[1], self.img2.shape[0], self.img2.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式
        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_7.setPixmap(jpg_out) 
        
        
    #均值滤波   
    def junzhi(self):
        img = cv2.cvtColor(self.img3, cv2.COLOR_BGR2GRAY)
        k1 = int(self.textEdit_jz1.toPlainText())
        k2 = int(self.textEdit_jz2.toPlainText())
        kSize = (k1, k2)
        self.img2 = cv2.blur(img,kSize)
        im = cv2.cvtColor(self.img2, cv2.COLOR_BGR2RGB)
        self.img2 = im
        _image = QtGui.QImage(im[:], im.shape[1], im.shape[0], im.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式

        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_7.setPixmap(jpg_out) 
        
    #高斯滤波
    def gaussian(self):
        img = cv2.cvtColor(self.img3, cv2.COLOR_BGR2GRAY)
        k1 = int(self.textEdit_gs1.toPlainText())
        k2 = int(self.textEdit_gs2.toPlainText())
        kSize = (k1, k2)
        sigmaX = int(self.textEdit_xbzc.toPlainText())
        sigmaY = self.textEdit_ybzc.toPlainText()
        if len(sigmaY) == 0:
            self.img2 = cv2.GaussianBlur(img, kSize, sigmaX)
        else:
            self.img2 = cv2.GaussianBlur(img, kSize, sigmaX,int(sigmaY))
        im = cv2.cvtColor(self.img2, cv2.COLOR_BGR2RGB)
        self.img2 = im
        _image = QtGui.QImage(im[:], im.shape[1], im.shape[0], im.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式

        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_7.setPixmap(jpg_out) 
        
    #中值滤波
    def median(self):
        img = cv2.cvtColor(self.img3, cv2.COLOR_BGR2GRAY)
        kSize = int(self.textEdit_zh.toPlainText())
        self.img2 = cv2.medianBlur(img, kSize)
        im = cv2.cvtColor(self.img2, cv2.COLOR_BGR2RGB)
        self.img2 = im
        _image = QtGui.QImage(im[:], im.shape[1], im.shape[0], im.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式

        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_7.setPixmap(jpg_out)    
        
    #方框滤波
    def boxblur(self):
        img = cv2.cvtColor(self.img3, cv2.COLOR_BGR2GRAY)
        k1 = int(self.textEdit_fk1.toPlainText())
        k2 = int(self.textEdit_fk2.toPlainText())
        kSize = (k1, k2)
        normalize = int(self.textEdit_jyh.toPlainText())
        self.img2 = cv2.boxFilter(img, -1, kSize, normalize)
        im = cv2.cvtColor(self.img2, cv2.COLOR_BGR2RGB)
        self.img2 = im
        _image = QtGui.QImage(im[:], im.shape[1], im.shape[0], im.shape[1] * 3,
                              QtGui.QImage.Format_RGB888)  # pyqt5转换成自己能放的图片格式

        jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
        self.label_7.setPixmap(jpg_out) 
    
    #命名
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "源图片"))
        self.label_2.setText(_translate("MainWindow", "处理后图片"))
        self.label_3.setText(_translate("MainWindow", "模式"))
        self.label_5.setText(_translate("MainWindow", "滤波处理"))
        self.pushButton.setText(_translate("MainWindow", "打开图像"))
        self.radioButton_2.setText(_translate("MainWindow", "灰度"))
        self.radioButton.setText(_translate("MainWindow", "彩色"))
        self.radioButton_3.setText(_translate("MainWindow", "二值化"))
        self.pushButton_2.setText(_translate("MainWindow", "保存图像"))
        self.label_6.setText(_translate("MainWindow", "源图像"))
        self.label_7.setText(_translate("MainWindow", "处理后图像"))
        self.pushButton_3.setText(_translate("MainWindow", "均值滤波"))
        self.pushButton_4.setText(_translate("MainWindow", "方框滤波"))
        self.pushButton_5.setText(_translate("MainWindow", "中值滤波"))
        self.pushButton_6.setText(_translate("MainWindow", "高斯滤波"))
        self.label_8.setText(_translate("MainWindow", "模糊核大小"))
        #增加文本提示
        self.textEdit_jz1.setToolTip(_translate("MainWindow", "

正奇数

")) self.textEdit_fk1.setToolTip(_translate("MainWindow", "

正奇数

")) self.textEdit_zh.setToolTip(_translate("MainWindow", "

正奇数

")) self.textEdit_gs1.setToolTip(_translate("MainWindow", "

正奇数

")) self.label_9.setText(_translate("MainWindow", "高斯核标准差")) #增加文本提示 self.textEdit_xbzc.setToolTip(_translate("MainWindow", "

x轴方向(必选)

")) self.textEdit_jyh.setToolTip(_translate("MainWindow", "

是(1)否(0)

")) self.label_10.setText(_translate("MainWindow", "均一化")) #增加文本提示 self.textEdit_jz2.setToolTip(_translate("MainWindow", "

正奇数

")) self.textEdit_fk2.setToolTip(_translate("MainWindow", "

正奇数

")) self.textEdit_gs2.setToolTip(_translate("MainWindow", "

正奇数

")) self.textEdit_ybzc.setToolTip(_translate("MainWindow", "

y轴方向(可选)

")) self.label_4.setText(_translate("MainWindow", "处理对象")) self.radioButton_4.setText(_translate("MainWindow", "源图像")) self.radioButton_5.setText(_translate("MainWindow", "处理后图像")) self.actionOpen.setText(_translate("MainWindow", "打开图像")) self.actionOpen.setShortcut(_translate("MainWindow", "Ctrl+A")) self.actionSave.setText(_translate("MainWindow", "保存图像")) self.actionSave.setShortcut(_translate("MainWindow", "Ctrl+S")) app=QtWidgets.QApplication(sys.argv) widget=QtWidgets.QMainWindow() ui=Ui_MainWindow() ui.setupUi(widget) widget.show() sys.exit(app.exec_())
效果展示

二值化阈值选择滑动窗口: 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1030756.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号