python - 在不改变比例和平移的情况下更新 pyqtgraph ImageView 图像
问题描述
我有一个 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
推荐阅读
- javascript - 为什么我无法获取此按钮的文本(名称)?
- javascript - 格式 H:mm 的 JavaScript 时间正则表达式
- html - 如何使用 API 响应中的 HTML 标记
- javascript - 当有些是字符串而有些是数字时,如何对数组中的项目执行数学运算?
- haskell - 如何在不重命名变量的情况下累积更改?
- reactjs - React 功能组件中的偏移顶部,getBoundingClientRect 无法正常工作
- perl - 数据驱动的 perl 脚本
- c++ - 关于 C/C++ 标准中的时间/空间复杂度
- python - 如何排查和解决 python 中的“TypeError: 'NoneType' object is not subscriptable”
- apache-kafka - 事件采购 - 为什么是专门的事件存储?