在不改变比例和平移的情况下更新 pyqtgraph ImageView 图像
Update pyqtgraph ImageView image without changing scale and translation
我有一个 ImageView,我想在不初始化显示(缩放、平移等)的情况下将图像更新为默认的居中、非缩放视图。
我有一个更新图像像素值的过程,我希望能够在应用这些更改之前放大图像的某些区域以查看发生的局部修改。
然而,每次调用 setImage 更新图像都会初始化视图中图像的缩放和位置。
我尝试在更新图像之前保存 QTransform 并将此变换用作 setImage 的输入。这对生成的图像没有影响。
class myImageView(pg.ImageView):
def __init__(self):
......
def setImage(self, img, autoRange=True, autoLevels=True,
levels=None, axes=None, xvals=None, pos=None,
scale=None, transform=None, autoHistogramRange=True):
self.min_level, self.max_level = self.ui.histogram.getLevels()
# get the current transform
transform = self.imageItem.transform()
# update the image displayed
pg.ImageView.setImage(self, img, autoRange=autoRange, autoLevels=autoLevels,
levels=levels, axes=axes, xvals=xvals, pos=pos,
scale=scale, transform=transform, autoHistogramRange=autoHistogramRange)
# update the histogram
self.ui.histogram.setLevels(self.min_level, self.max_level)
# try to apply the transform to the image item
self.imageItem.setTransform(transform)
生成的图像自动居中并重新初始化缩放。
有没有办法保留之前使用的缩放和翻译并再次应用它们?
您可以将 autoRange 设置为 False
image_view = pg.ImageView()
image_view.setImage(img_original)
# this will disable rescaling and translate
image_view.setImage(img_new, autoRange=False)
文档:https://pyqtgraph.readthedocs.io/en/latest/widgets/imageview.html#pyqtgraph.ImageView.setImage
我有一个 ImageView,我想在不初始化显示(缩放、平移等)的情况下将图像更新为默认的居中、非缩放视图。
我有一个更新图像像素值的过程,我希望能够在应用这些更改之前放大图像的某些区域以查看发生的局部修改。
然而,每次调用 setImage 更新图像都会初始化视图中图像的缩放和位置。
我尝试在更新图像之前保存 QTransform 并将此变换用作 setImage 的输入。这对生成的图像没有影响。
class myImageView(pg.ImageView):
def __init__(self):
......
def setImage(self, img, autoRange=True, autoLevels=True,
levels=None, axes=None, xvals=None, pos=None,
scale=None, transform=None, autoHistogramRange=True):
self.min_level, self.max_level = self.ui.histogram.getLevels()
# get the current transform
transform = self.imageItem.transform()
# update the image displayed
pg.ImageView.setImage(self, img, autoRange=autoRange, autoLevels=autoLevels,
levels=levels, axes=axes, xvals=xvals, pos=pos,
scale=scale, transform=transform, autoHistogramRange=autoHistogramRange)
# update the histogram
self.ui.histogram.setLevels(self.min_level, self.max_level)
# try to apply the transform to the image item
self.imageItem.setTransform(transform)
生成的图像自动居中并重新初始化缩放。
有没有办法保留之前使用的缩放和翻译并再次应用它们?
您可以将 autoRange 设置为 False
image_view = pg.ImageView()
image_view.setImage(img_original)
# this will disable rescaling and translate
image_view.setImage(img_new, autoRange=False)
文档:https://pyqtgraph.readthedocs.io/en/latest/widgets/imageview.html#pyqtgraph.ImageView.setImage