如何更改图像对比度(窗口中心和宽度)并在 QLabel 中显示(Python3.5,Qt5.1)
Posted
技术标签:
【中文标题】如何更改图像对比度(窗口中心和宽度)并在 QLabel 中显示(Python3.5,Qt5.1)【英文标题】:How to change the image contrast (window center and width) and display in QLabel(Python3.5, Qt5.1) 【发布时间】:2018-10-02 11:17:33 【问题描述】:我需要根据窗口中心和窗口宽度调整图像对比度,然后在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】:我找到了解决方案。
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))
【讨论】:
以上是关于如何更改图像对比度(窗口中心和宽度)并在 QLabel 中显示(Python3.5,Qt5.1)的主要内容,如果未能解决你的问题,请参考以下文章
图像 <a> 垂直和水平对齐中心并在两者中都使用 % 调整大小
Dicom Toolkit (DCMTK) - 如何获取窗口中心和宽度