如何在QLabel中更改图像对比度(窗口中心和宽度)并显示(Python3.5,Qt5.1)

时间:2018-04-22 07:39:59

标签: python pyqt pyqt5 qimage qlabel

我需要根据窗口中心和窗口宽度调整图像对比度,然后在QLabel中显示。目前,代码是:(以下代码中的'self'是继承自QLabel的子类,函数'qimage2ndarray.gray2qimage'用于将python变量(disImg)更改为QT变量(QImg))

self.contrast['center']=-71
self.contrast['width']=800
disImg = (self.originalImg-self.contrast['center'])/self.contrast['width']+0.5
QImg = qimage2ndarray.gray2qimage(disImg)
self.setPixmap(QPixmap.fromImage(QImg))

然而,图像只是一个黑色图像。

我认为问题可以通过将强度归一化为0~255来修复,喜欢:

self.contrast['center']=-71
self.contrast['width']=800
disImg = (self.originalImg-self.contrast['center'])/self.contrast['width']+0.5
# normalization to 0~255
MIN = disImg.min()
MAX = disImg.max()
normImg = (disImg-MIN)/(MAX-MIN)
normImg = normImg*255
QImg = qimage2ndarray.gray2qimage(normImg)
self.setPixmap(QPixmap.fromImage(QImg))

使用上述代码时,可以正确显示图像。但更改self.contrast ['center']和self.contrast ['width']

后,显示图像看起来一样

有人遇到同样的问题吗?请帮助我,并提前感谢。 强

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

在QLabel焦点上0〜255。显示图像,我们设置其小于0到0的像素,并且其是啤酒比255〜255然后,将QLabel正确显示图像的像素,对比度没关系代码是:

    MIN = (2*self.contrast['center'] - self.contrast['width'])/2.0 + 0.5
    MAX = (2*self.contrast['center'] + self.contrast['width'])/2.0 + 0.5
    dFactor = 255.0/(MAX-MIN)
    disImg = (self.originalImg - MIN)*dFactor
    disImg[disImg<0] = 0
    disImg[disImg>255] = 255
    QImg = qimage2ndarray.gray2qimage(disImg)
    self.setPixmap(QPixmap.fromImage(QImg))