2024-03-28 21:41:44 发布
网友
我想在我的自定义窗口中显示PyQt4中的两个图像。左侧是源图像。在右侧,转换后的图像将是像素级的图像。图像将以RGBA格式由PIL加载(low),并用于numpy(scipy.ndimage.imread)。在
scipy.ndimage.imread
两个图像的大小相同(因为转换后的图像将从源图像生成),并且两个显示器的大小相同(与图像大小无关):
问题:我可以使用什么组件来显示具有内部滚动功能的图像?(我对组件名称和一些指导原则很满意;代码会很感激,但主要概念对于答案来说是重要的)。在
有几种解决方案。如果您只想创建一次numpy“image”,然后再显示它,并且它不是太大(或者您不关心内存),您可以简单地将其转换为QPixmap并在一个视口中显示它:Convert numpy array to PySide QPixmap
QPixmap
self.imageLabel = QtGui.QLabel() self.imageLabel.setBackgroundRole(QtGui.QPalette.Base) self.imageLabel.setSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Ignored) # not sure about this one. self.imageLabel.setPixmap(...pixmap here...) self.scrollArea = QtGui.QScrollArea() self.scrollArea.setBackgroundRole(QtGui.QPalette.Dark) self.scrollArea.setWidget(self.imageLabel)
(取自http://ftp.ics.uci.edu/pub/centos0/ics-custom-build/BUILD/PyQt-x11-gpl-4.7.2/examples/widgets/imageviewer.py)
如果图像太大,则可以添加油漆钩。在钩子中,获取QScrollArea(视区)的可见部分,将其转换为pixmap并进行渲染。在
QScrollArea
当numpy数组一直在变化时也是如此。更新阵列后需要触发刷新。然后,Qt将调用paint钩子,新内容将可见。在
有几种解决方案。如果您只想创建一次numpy“image”,然后再显示它,并且它不是太大(或者您不关心内存),您可以简单地将其转换为
QPixmap
并在一个视口中显示它:Convert numpy array to PySide QPixmap(取自http://ftp.ics.uci.edu/pub/centos0/ics-custom-build/BUILD/PyQt-x11-gpl-4.7.2/examples/widgets/imageviewer.py)
如果图像太大,则可以添加油漆钩。在钩子中,获取
QScrollArea
(视区)的可见部分,将其转换为pixmap并进行渲染。在当numpy数组一直在变化时也是如此。更新阵列后需要触发刷新。然后,Qt将调用paint钩子,新内容将可见。在
相关问题 更多 >
编程相关推荐