from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class TableWidget(QTableWidget):
def __init__(self, parent=None):
super(TableWidget, self).__init__(parent=parent)
self.mainwindow = parent
self.setShowGrid(True) # 显示网格
self.setAlternatingRowColors(True) # 隔行显示颜色
self.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.horizontalHeader().setVisible(False)
self.verticalHeader().setVisible(False)
self.horizontalHeader().sectionResizeMode(QHeaderView.Stretch)
self.verticalHeader().sectionResizeMode(QHeaderView.Stretch)
self.horizontalHeader().setStretchLastSection(True)
self.setFocusPolicy(Qt.NoFocus)
def signal_connect(self):
for spinbox in self.findChildren(QSpinBox):
spinbox.valueChanged.connect(self.update_item)
for doublespinbox in self.findChildren(QDoubleSpinBox):
doublespinbox.valueChanged.connect(self.update_item)
for combox in self.findChildren(QComboBox):
combox.currentIndexChanged.connect(self.update_item)
for checkbox in self.findChildren(QCheckBox):
checkbox.stateChanged.connect(self.update_item)
def update_item(self):
param = self.get_params()
self.mainwindow.useListWidget.currentItem().update_params(param)
self.mainwindow.update_image()
def update_params(self, param=None):
for key in param.keys():
box = self.findChild(QWidget, name=key)
if isinstance(box, QSpinBox) or isinstance(box, QDoubleSpinBox):
box.setValue(param[key])
elif isinstance(box, QComboBox):
box.setCurrentIndex(param[key])
elif isinstance(box, QCheckBox):
box.setChecked(param[key])
def get_params(self):
param = {}
for spinbox in self.findChildren(QSpinBox):
param[spinbox.objectName()] = spinbox.value()
for doublespinbox in self.findChildren(QDoubleSpinBox):
param[doublespinbox.objectName()] = doublespinbox.value()
for combox in self.findChildren(QComboBox):
param[combox.objectName()] = combox.currentIndex()
for combox in self.findChildren(QCheckBox):
param[combox.objectName()] = combox.isChecked()
return param
class GrayingTableWidget(TableWidget):
def __init__(self, parent=None):
super(GrayingTableWidget, self).__init__(parent=parent)
class FilterTabledWidget(TableWidget):
def __init__(self, parent=None):
super(FilterTabledWidget, self).__init__(parent=parent)
self.kind_comBox = QComboBox()
self.kind_comBox.addItems(['均值滤波', '高斯滤波', '中值滤波'])
self.kind_comBox.setObjectName('kind')
self.ksize_spinBox = QSpinBox()
self.ksize_spinBox.setObjectName('ksize')
self.ksize_spinBox.setMinimum(1)
self.ksize_spinBox.setSingleStep(2)
self.setColumnCount(2)
self.setRowCount(2)
self.setItem(0, 0, QTableWidgetItem('类型'))
self.setCellWidget(0, 1, self.kind_comBox)
self.setItem(1, 0, QTableWidgetItem('核大小'))
self.setCellWidget(1, 1, self.ksize_spinBox)
self.signal_connect()
class MorphTabledWidget(TableWidget):
def __init__(self, parent=None):
super(MorphTabledWidget, self).__init__(parent=parent)
self.op_comBox = QComboBox()
self.op_comBox.addItems(['腐蚀操作', '膨胀操作', '开操作', '闭操作', '梯度操作', '顶帽操作', '黑帽操作'])
self.op_comBox.setObjectName('op')
self.ksize_spinBox = QSpinBox()
self.ksize_spinBox.setMinimum(1)
self.ksize_spinBox.setSingleStep(2)
self.ksize_spinBox.setObjectName('ksize')
self.kshape_comBox = QComboBox()
self.kshape_comBox.addItems(['方形', '十字形', '椭圆形'])
self.kshape_comBox.setObjectName('kshape')
self.setColumnCount(2)
self.setRowCount(3)
self.setItem(0, 0, QTableWidgetItem('类型'))
self.setCellWidget(0, 1, self.op_comBox)
self.setItem(1, 0, QTableWidgetItem('核大小'))
self.setCellWidget(1, 1, self.ksize_spinBox)
self.setItem(2, 0, QTableWidgetItem('核形状'))
self.setCellWidget(2, 1, self.kshape_comBox)
self.signal_connect()
class GradTabledWidget(TableWidget):
def __init__(self, parent=None):
super(GradTabledWidget, self).__init__(parent=parent)
self.kind_comBox = QComboBox()
self.kind_comBox.addItems(['Sobel算子', 'Scharr算子', 'Laplacian算子'])
self.kind_comBox.setObjectName('kind')
self.ksize_spinBox = QSpinBox()
self.ksize_spinBox.setMinimum(1)
self.ksize_spinBox.setSingleStep(2)
self.ksize_spinBox.setObjectName('ksize')
self.dx_spinBox = QSpinBox()
self.dx_spinBox.setMaximum(1)
self.dx_spinBox.setMinimum(0)
self.dx_spinBox.setSingleStep(1)
self.dx_spinBox.setObjectName('dx')
self.dy_spinBox = QSpinBox()
self.dy_spinBox.setMaximum(1)
self.dy_spinBox.setMinimum(0)
self.dy_spinBox.setSingleStep(1)
self.dy_spinBox.setObjectName('dy')
self.setColumnCount(2)
self.setRowCount(4)
self.setItem(0, 0, QTableWidgetItem('类型'))
self.setCellWidget(0, 1, self.kind_comBox)
self.setItem(1, 0, QTableWidgetItem('核大小'))
self.setCellWidget(1, 1, self.ksize_spinBox)
self.setItem(2, 0, QTableWidgetItem('x方向'))
self.setCellWidget(2, 1, self.dx_spinBox)
self.setItem(3, 0, QTableWidgetItem('y方向'))
self.setCellWidget(3, 1, self.dy_spinBox)
self.signal_connect()
class ThresholdTableWidget(TableWidget):
def __init__(self, parent=None):
super(ThresholdTableWidget, self).__init__(parent=parent)
self.thresh_spinBox = QSpinBox()
self.thresh_spinBox.setObjectName('thresh')
self.thresh_spinBox.setMaximum(255)
self.thresh_spinBox.setMinimum(0)
self.thresh_spinBox.setSingleStep(1)
self.maxval_spinBox = QSpinBox()
self.maxval_spinBox.setObjectName('maxval')
self.maxval_spinBox.setMaximum(255)
self.maxval_spinBox.setMinimum(0)
self.maxval_spinBox.setSingleStep(1)
self.method_comBox = QComboBox()
self.method_comBox.addItems(['二进制阈值化', '反二进制阈值化', '截断阈值化', '阈值化为0', '反阈值化为0', '大津算法'])
self.method_comBox.setObjectName('method')
self.setColumnCount(2)
self.setRowCount(3)
self.setItem(0, 0, QTableWidgetItem('类型'))
self.setCellWidget(0, 1, self.method_comBox)
self.setItem(1, 0, QTableWidgetItem('阈值'))
self.setCellWidget(1, 1, self.thresh_spinBox)
self.setItem(2, 0, QTableWidgetItem('最大值'))
self.setCellWidget(2, 1, self.maxval_spinBox)
self.signal_connect()
class EdgeTableWidget(TableWidget):
def __init__(self, parent=None):
super(EdgeTableWidget, self).__init__(parent=parent)
self.thresh1_spinBox = QSpinBox()
self.thresh1_spinBox.setMinimum(0)
self.thresh1_spinBox.setMaximum(255)
self.thresh1_spinBox.setSingleStep(1)
self.thresh1_spinBox.setObjectName('thresh1')
self.thresh2_spinBox = QSpinBox()
self.thresh2_spinBox.setMinimum(0)
self.thresh2_spinBox.setMaximum(255)
self.thresh2_spinBox.setSingleStep(1)
self.thresh2_spinBox.setObjectName('thresh2')
self.setColumnCount(2)
self.setRowCount(2)
self.setItem(0, 0, QTableWidgetItem('阈值1'))
self.setCellWidget(0, 1, self.thresh1_spinBox)
self.setItem(1, 0, QTableWidgetItem('阈值2'))
self.setCellWidget(1, 1, self.thresh2_spinBox)
self.sig
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
课程设计基于python+opencv实现的图像处理程序源代码(带界面,功能多).zip 【资源说明】 1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通。 2.主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 课程设计基于python+opencv实现的图像处理程序源代码(带界面,功能多).zip课程设计基于python+opencv实现的图像处理程序源代码(带界面,功能多).zip课程设计基于python+opencv实现的图像处理程序源代码(带界面,功能多).zip课程设计基于python+opencv实现的图像处理程序源代码(带界面,功能多).zip 课程设计基于python+opencv实现的图像处理程序源代码(带界面,功能多).zip 课程设计基于python+opencv实现的图像处理程序源代码(带界面,功能多).zip 课程设计基于python+opencv实现的图像处理程序源代码(带界面,功能多).zip
资源推荐
资源详情
资源评论
收起资源包目录
课程设计基于python+opencv实现的图像处理程序源代码(带界面,功能多).zip (19个子文件)
项目说明.md 294B
main.py 4KB
custom
styleSheet.qss 2KB
stackedWidget.py 282B
tableWidget.py 12KB
listWidgets.py 3KB
treeView.py 1KB
listWidgetItems.py 7KB
graphicsView.py 3KB
icons
main.png 4KB
直方图.png 465B
branch-open.png 285B
branch-close.png 276B
右旋转.png 862B
color.png 5KB
左旋转.png 833B
flags.py 2KB
demo.png 36KB
config.py 561B
共 19 条
- 1
资源评论
manylinux
- 粉丝: 4537
- 资源: 2485
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功