PyQT5之QRadioButton

news/2025/3/18 15:14:01/文章来源:https://www.cnblogs.com/jackchen28/p/18232288
import os.pathfrom PyQt5 import QtWidgets
from PyQt5 import QtCore, QtGui
import sys
import cv2class ButtonPanel(QtWidgets.QWidget):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)select_btn = QtWidgets.QPushButton("图像选择")self.path_label = QtWidgets.QLabel()self.path_label.setText("当前未显示图像路径")self.path_label.setAlignment(QtCore.Qt.AlignCenter)  # label上居中显示self.path_label.setMaximumHeight(50)  # label最大高度设置self.path_label.setStyleSheet("background-color:pink;color:green")  # 背景颜色设置font = QtGui.QFont()font.setBold(True)font.setPointSizeF(10)self.path_label.setFont(font)self.image_label = QtWidgets.QLabel()src = cv2.imread("./image/img1.png")  # BGRimage = cv2.cvtColor(src, cv2.COLOR_BGR2RGB)  # 将BGR转为RGBh, w, c = image.shapeimg = QtGui.QImage(image.data, w, h, 3 * w, QtGui.QImage.Format_RGB888)pixmap = QtGui.QPixmap(img)pix = pixmap.scaled(QtCore.QSize(640, 640), QtCore.Qt.KeepAspectRatio)  # 自动保持比例放缩方式self.image_label.setPixmap(pix)  # 设置图像显示self.image_label.setAlignment(QtCore.Qt.AlignCenter)  # label上的内容居中显示self.image_label.setStyleSheet("background-color:blue;color:green")  # 背景颜色设置self.gray_rbtn = QtWidgets.QRadioButton("灰度")self.gauss_rbtn = QtWidgets.QRadioButton("高斯模糊")self.laps_rbtn = QtWidgets.QRadioButton("拉普拉斯")self.origin_rbtn = QtWidgets.QRadioButton("原图")rbtn_panel = QtWidgets.QGroupBox("图像文件选择")hbox = QtWidgets.QHBoxLayout()hbox.addWidget(self.gray_rbtn)hbox.addWidget(self.gauss_rbtn)hbox.addWidget(self.laps_rbtn)hbox.addWidget(self.origin_rbtn)hbox.addStretch(1)rbtn_panel.setLayout(hbox)btn_panel = QtWidgets.QGroupBox("图像文件选择")hboxlayout = QtWidgets.QHBoxLayout()hboxlayout.addWidget(self.path_label)hboxlayout.addWidget(select_btn)hboxlayout.addStretch(1)btn_panel.setLayout(hboxlayout)self.image_label.setAlignment(QtCore.Qt.AlignCenter)  # label上的内容居中显示self.image_label.setStyleSheet("background-color:pink;color:green")  # 背景颜色设置vboxlayout = QtWidgets.QVBoxLayout()vboxlayout.addWidget(self.image_label)vboxlayout.addWidget(btn_panel)vboxlayout.addWidget(rbtn_panel)vboxlayout.addStretch(1)self.setLayout(vboxlayout)# 绑定点击select_btn.clicked.connect(self.on_select_image)self.gray_rbtn.toggled.connect(self.on_gray_image)self.gauss_rbtn.toggled.connect(self.on_blur_image)self.laps_rbtn.toggled.connect(self.on_laps_image)self.origin_rbtn.toggled.connect(self.on_origin_image)def on_gray_image(self):file_path = self.path_label.text()print(file_path)# file_path = 'D:/Work/ProjectItems/OpenCV+PyQT开发项目实例/image/img2.png'# file_path.split('/')[-1]file_path = os.path.join('.\\image', file_path.split('/')[-1])src = cv2.imread(file_path)                     # BGRgray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)    # 将BGR转为grayrbg = cv2.cvtColor(gray, cv2.COLOR_GRAY2RGB)    # 将gray转为RGBh, w, c = src.shapeimg = QtGui.QImage(rbg.data, w, h, 3 * w, QtGui.QImage.Format_RGB888)pixmap = QtGui.QPixmap(img)pix = pixmap.scaled(QtCore.QSize(640, 640), QtCore.Qt.KeepAspectRatio)  # 自动保持比例放缩方式self.image_label.setPixmap(pix)      # 设置图像显示# self.image_label.setAlignment(QtCore.Qt.AlignCenter)  # label上的内容居中显示# self.image_label.setStyleSheet("background-color:blue;color:green")  # 背景颜色设置def on_blur_image(self):file_path = self.path_label.text()file_path = os.path.join('.\\image', file_path.split('/')[-1])src = cv2.imread(file_path)   # BGRblur = cv2.GaussianBlur(src, (0, 0), 15)   # 将BGR转为grayrbg = cv2.cvtColor(blur, cv2.COLOR_BGR2RGB)    # 将BGR转为RGBh, w, c = src.shapeimg = QtGui.QImage(rbg.data, w, h, 3 * w, QtGui.QImage.Format_RGB888)pixmap = QtGui.QPixmap(img)pix = pixmap.scaled(QtCore.QSize(640, 640), QtCore.Qt.KeepAspectRatio)  # 自动保持比例放缩方式self.image_label.setPixmap(pix)      # 设置图像显示# self.image_label.setAlignment(QtCore.Qt.AlignCenter)  # label上的内容居中显示# self.image_label.setStyleSheet("background-color:blue;color:green")  # 背景颜色设置def on_laps_image(self):file_path = self.path_label.text()file_path = os.path.join('.\\image', file_path.split('/')[-1])src = cv2.imread(file_path)   # BGRlaps = cv2.Laplacian(src, -1)   # -1表示输入和输出保持一致rbg = cv2.cvtColor(laps, cv2.COLOR_BGR2RGB)    # 将BGR转为RGBh, w, c = src.shapeimg = QtGui.QImage(rbg.data, w, h, 3 * w, QtGui.QImage.Format_RGB888)pixmap = QtGui.QPixmap(img)pix = pixmap.scaled(QtCore.QSize(640, 640), QtCore.Qt.KeepAspectRatio)  # 自动保持比例放缩方式self.image_label.setPixmap(pix)      # 设置图像显示# self.image_label.setAlignment(QtCore.Qt.AlignCenter)  # label上的内容居中显示# self.image_label.setStyleSheet("background-color:blue;color:green")  # 背景颜色设置def on_origin_image(self):file_path = self.path_label.text()file_path = os.path.join('.\\image', file_path.split('/')[-1])src = cv2.imread(file_path)   # BGRrbg = cv2.cvtColor(src, cv2.COLOR_BGR2RGB)    # 将BGR转为RGBh, w, c = src.shapeimg = QtGui.QImage(rbg.data, w, h, 3 * w, QtGui.QImage.Format_RGB888)pixmap = QtGui.QPixmap(img)pix = pixmap.scaled(QtCore.QSize(640, 640), QtCore.Qt.KeepAspectRatio)  # 自动保持比例放缩方式self.image_label.setPixmap(pix)      # 设置图像显示# self.image_label.setAlignment(QtCore.Qt.AlignCenter)  # label上的内容居中显示# self.image_label.setStyleSheet("background-color:blue;color:green")  # 背景颜色设置def on_select_image(self):fileinfo = QtWidgets.QFileDialog.getOpenFileName(self, "打开图像文件", ".", "图像文件(*.jpg *.png)")fileName = fileinfo[0]if fileName != "":self.path_label.setText(fileName)pixmap = QtGui.QPixmap(fileName)pix = pixmap.scaled(QtCore.QSize(640, 640), QtCore.Qt.KeepAspectRatio)  # 自动保持比例放缩方式self.image_label.setPixmap(pix)      # 设置图像显示if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)main_win = QtWidgets.QMainWindow()main_win.setWindowTitle("图像浏览显示")myPanel = ButtonPanel()main_win.setCentralWidget(myPanel)main_win.setMinimumSize(1080, 720)main_win.show()app.exec_()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/720171.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TransGNN论文阅读笔记

TransGNN: Harnessing the Collaborative Power of Transformers and Graph Neural Networks for Recommender Systems论文阅读笔记 Abstract 存在的问题: ​ 目前基于 GNN 的方法仍面临着感受野有限和存在 "兴趣无关 "连接噪声的挑战。相比之下,基于Transformer的…

大型零售企业总部到分公司数据发放,有没有更优化的方案?

大型零售企业在市场经济中扮演重要角色,是保证基础商品生产、流通和供给的重要一环。随着企业发展,很多大型零售企业都会在全国、乃至全球各地开设分公司,用以降低生产和运营成本,更好地提供本地化服务。为了保证总部与分公司间信息通畅,同时,总部和分公司间的业务数据、…

UDP内网穿透和打洞原理的C语言代码实现

在典型的NAT穿透场景中,知道服务器端的公网IP和端口,但不知道客户端的公网IP,可以通过一些技巧来实现UDP打洞。可实现内网客户端与服务器相互UDP通信。v1.0 2024年6月5日 发布于博客园目录序言UDP打洞的原理应用场景基本理论代码实现udp_client_NAT.cudp_server_NAT.c结果参…

低代码智能通信:腾讯云短信助力,快速构建高效消息应用

前言 ​ 随着信息技术的飞速发展,现代社会对信息传达的及时性、准确性与便捷性要求越来越高。尤其在移动互联网时代,用户对于服务的体验要求不断提升,这促使各类网站、APP、小程序等服务平台必须持续优化其交互方式,以满足用户日益增长的需求。 ​ 在此背景下,短信作为一种…

.NET C# 程序自动更新组件

实现一个轻量级独立自动更新组件,可稍作修改集成到大家自己项目中,比如:WPF/Winform/Windows服务引言 本来博主想偷懒使用AutoUpdater.NET组件,但由于博主项目有些特殊性和它的功能过于多,于是博主自己实现一个轻量级独立自动更新组件,可稍作修改集成到大家自己项目中,比…

IC设计企业致力于解决的HPC数据防泄漏,到底该怎么做?

对于半导体IC设计企业来说,芯片设计、验证、仿真使用HPC环境现在已逐渐成为趋势,主要原因在于原来的工作流程存在较多的缺陷: 性能瓶颈:仿真、设计、验证、生产过程中,前端仿真需要小文件高并发低时延的读写和巨量元数据处理能力,后端仿真存储需要提供很大的读写带宽满足…

重写学习 localStorage 与 sessionStorage

localStorage 与 sessionStorage localStorage 与 sessionStorage 很多小伙伴对它们俩都很熟悉了;最熟悉的莫过下面这2条 1,localStorage 存储的数据没有时间限制,理论上永久有效;除非手动清除。sessionStorage 存储的数据在关闭当前页面后失效; 2,有存储大小限制,两者存储大…

ASP.NET Web应用程序升级最新的MSBuild格式后,Visual Studio 2022中如何调试?

摘要 把ASP.NET的Web应用程序,Project文件从 <Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">改为 <Project Sdk="Microsoft.NET.Sdk.Web">之后,升…

AI带你玩转音乐,使你成为真正音乐人(AI歌曲制作)

利用AI工具快速完成一首歌: 歌由词和曲组成。 词可以利用文心一言 输入:写一首赞扬国家繁华发展的歌词 这样一首歌的词部分已经出来。 曲部分: 利用https://suno.com/create生成: 拷贝文心一言生成的词 选择定制模式Custom Mode有更多的风格可以制作点击生成就可以完成曲制…

零基础写框架(2):故障排查和日志基础

关于从零设计 .NET 开发框架 作者:痴者工良 教程说明: 仓库地址:https://github.com/whuanle/maomi 文档地址:https://maomi.whuanle.cn 作者博客: https://www.whuanle.cn https://www.cnblogs.com/whuanle 故障排查和日志 .NET 程序进行故障排查的方式有很多,笔者个人总…