PyQt5-QDial

P y Q t 5 − Q D i a l PyQt5-QDial PyQt5QDial

在这里插入图片描述

# 0.导入需要的包和模块
import pydicom
from PyQt5.Qt import *
import sys
from PIL import Image
import os
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Major")
        self.resize(800, 800)
        self.cwd = os.getcwd() # 获取当前路径
        '''
          1.展示图片的QLabel
        '''
        self.show_label = QLabel(self)
        self.show_label.resize(512,512)
        self.show_label.setStyleSheet("background-color:#888888")
        self.show_label.move(100,100)
        '''
          2.打开dicom图片的btn
        '''
        self.open_btn = QPushButton(self)
        self.open_btn.setText("打开Dicom图像")
        self.open_btn.move(0,0)
        self.open_btn.clicked.connect(self.open_dicom_file)
        '''
          3.控制图片的QSlider
        '''
        self.sd = QDial(self)
        self.sd.move(200,0)
        # 设置最大值和最小值
        self.sd.setMinimum(0)
        self.sd.setMaximum(360)
        # 绑定槽函数
        self.sd.valueChanged.connect(self.processing_img)
        # 外观倒立
        self.sd.setInvertedAppearance(True)
        '''
          4.处理的图像
        '''
        self.processed_img = None



    def processing_img(self):
        self.show_label.setText(str(self.sd.value()))
        img = Image.open("rgb_show.jpg")
        img_rotated = img.rotate(angle=self.sd.value())
        img_rotated.save("rgb_rotated_show.jpg")
        self.show_label.setPixmap(QPixmap("rgb_rotated_show.jpg"))
        self.show_label.setScaledContents(True)




    def open_dicom_file(self):
        print(self.show_label)
        fileName_choose, filetype = QFileDialog.getOpenFileName(self,
                                                                "选取文件",
                                                                self.cwd,  # 起始路径
                                                                "All Files (*);;Text Files (*.txt)")  # 设置文件扩展名过滤,用双分号间隔

        if fileName_choose == "":
            print("\n取消选择")
            return

        print("\n你选择的文件夹为:")
        print(fileName_choose)

        dcm = pydicom.read_file(fileName_choose)
        raw_img = dcm.pixel_array
        # img = Image.fromarray(raw_img)
        # img.show()
        # 2.映射到0-255之间
        raw_flatten_img = raw_img.flatten()
        max_val = max(raw_flatten_img)
        min_val = min(raw_flatten_img)
        raw_img = (raw_img - min_val) / (max_val - min_val)  # 图像归一化
        raw_img = raw_img * 255
        img = Image.fromarray(raw_img)
        img.convert('RGB').save("rgb_show.jpg", format='jpeg')

        self.show_label.setPixmap(QPixmap("rgb_show.jpg"))
        self.show_label.setScaledContents(True)

if __name__ == '__main__':

    # 1.创建一个应用程序对象
    app = QApplication(sys.argv)
    # 2.控件的操作
    # 2.1创建控件
    window = Window()
    # 2.2设置控件



    # 2.3展示控件
    window.show()
    # 3.应用程序的执行,进入到信息循环
    sys.exit(app.exec_())

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值