思路分析:
-
main.py
主要负责用户界面和事件处理。- 它首先导入许多所需的模块,然后定义一个
MyWidget
类来处理用户界面和信号。 MyWidget
类的构造函数在载入用户界面后,设置一些初值和预置的图像处理选项,然后与按钮、滑块和下拉框的信号(如点击、值改变、选择改变等)连接对应的槽函数。- 槽函数主要调用
Photo_Operate
模块中的函数来处理图像,并更新用户界面上的图像显示。
- 它首先导入许多所需的模块,然后定义一个
-
Photo_Operate.py
主要负责图像处理。- 它包含一系列的函数,每个函数对应一种特定的图像处理操作,如灰度化、旋转、亮度调整、对比度调整、模糊、边缘检测等。
- 这些函数读取路径下的图像文件,进行相应的处理,然后将结果保存到预定的路径下。
mian.py
import sys
from opencv import Photo_Operate
from PyQt6 import uic
from PyQt6.QtGui import QPixmap
from PyQt6.QtWidgets import QWidget, QApplication, QLabel, QPushButton, QFileDialog, \
QSlider, QComboBox
class MyWidget(QWidget):
def __init__(self):
super().__init__()
ui = uic.loadUi('1.ui', self)
self.photo_obj_sav = 'C:/Users/29610/new.jpg'
self.photo_obj_sav_gray = 'C:/Users/29610/new_gray.jpg'
self.photo_path_save = 'C:/Users/29610/save.jpg'
self.photo_path_open = ''
self.list = ['模糊', '锐化', '边缘检测']
self.label: QLabel = self.label
self.btn1: QPushButton = self.btn1
self.btn2: QPushButton = self.btn2
self.btn3: QPushButton = self.btn3
self.btn4: QPushButton = self.btn4
self.btn5: QPushButton = self.btn5
self.btn6: QPushButton = self.btn6
self.slider1: QSlider = self.slider1
self.slider2: QSlider = self.slider2
self.comboBox: QComboBox = self.comboBox
self.comboBox.addItems(self.list)
self.btn1.clicked.connect(self.btn1_slot)
self.btn2.clicked.connect(self.btn2_slot)
self.btn3.clicked.connect(self.btn3_slot)
self.btn4.clicked.connect(self.btn4_slot)
self.btn5.clicked.connect(self.btn5_slot)
self.btn6.clicked.connect(self.btn6_slot)
self.slider1.valueChanged.connect(self.slider1_slot)
self.slider2.valueChanged.connect(self.slider2_slot)
self.comboBox.activated.connect(self.getComboBox_slot)
#灰度化
def btn1_slot(self):
path = Photo_Operate.grayscale(
self.photo_obj_sav_gray,
self.photo_obj_sav_gray)
self.label.setPixmap(QPixmap(path))
self.photo_path_save = rf'{path}'
self.label.setScaledContents(True)
#打开
def btn2_slot(self):
path, filetype = QFileDialog.getOpenFileName(