pyqtgraph - 是否可以使用没有直方图的ImageView?

问题描述 投票:2回答:3

我目前有一个ImageView显示Dicom图像,但我不希望侧面的直方图。并尽可能将这两个按钮移动到另一个地方。我该怎么做?

python pyqt dicom pyqtgraph
3个回答
2
投票

ImageView的特殊之处在于你得到了直方图。另一种显示图像的方法是将ImageItem添加到基本绘图中并隐藏轴。以这种方式解决问题可以让您很好地控制应用程序显示的内容。

这是一个代码示例:

from PyQt4 import QtGui, QtCore
import pyqtgraph as pg
import numpy as np

win = pg.GraphicsWindow()
plot = win.addPlot()

imagedata = np.random.random((256,256))
ii = pg.ImageItem(imagedata)
plot.addItem(ii)
plot.hideAxis('left')
plot.hideAxis('bottom')

import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
    QtGui.QApplication.instance().exec_()

一个hacky方法的开始是在你的ImageView上调用ui.histogram.hide()。像这样的东西

from PyQt4 import QtCore, QtGui
import pyqtgraph as pg
import numpy as np

app = QtGui.QApplication([])
win = QtGui.QMainWindow()
imv = pg.ImageView()
win.setCentralWidget(imv)
win.show()

imagedata = np.random.random((256,256))
imv.setImage(imagedata)
imv.ui.histogram.hide()

import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
    QtGui.QApplication.instance().exec_()

1
投票

我知道现在已经很晚了,但是对于想要在未来想出一个想象而不是一个图像项目的人来说,这是有用的:

假设你有一个图像视图标记imv和一个布尔值show_histogram,你可以用以下代码切换显示直方图(及其下面的两个按钮)。

if show_histogram:
    imv.ui.histogram.show()
    imv.ui.roiBtn.show()
    imv.ui.menuBtn.show()
else:
    imv.ui.histogram.hide()
    imv.ui.roiBtn.hide()
    imv.ui.menuBtn.hide()

0
投票

这是一个没有直方图的ImageItem。也许这就是你要找的东西。

import pyqtgraph as pg
from PyQt4 import QtCore, QtGui

app = QtGui.QApplication([])

imageWidget = pg.GraphicsLayoutWidget()
vb = imageWidget.addViewBox(row=1, col=1)
img = pg.ImageItem()
vb.addItem(img)
vb.setAspectLocked(True)
© www.soinside.com 2019 - 2024. All rights reserved.