从 pyqtgraph 获取 imageitem 值
Getting imageitem values from pyqtgraph
我正在开发我的第一个 PyQt 程序,感觉我缺少一些关于 ImageItems 或 GraphicsScenes 的明显的东西。我有一个使用 ImageView 与 PyQtGraph 一起显示的 2d ImageItem。我的数据是一个 numpy 数组。当鼠标悬停在图像上的一个点上时,我可以获得 x 和 y 位置值,但也想知道 image/z/array 值。我发现了一个类似的问题,它显示了如何获取 x 和 y 值,而不是图像值。我将我当前与 PyQt4 和 python 2.7 一起使用的代码包含在 Windows 中,将 link 包含在另一个 post.
中
https://groups.google.com/forum/#!topic/pyqtgraph/srQqVW9bqPg
import pyqtgraph as pg
self.image = pg.ImageView(self)
self.image.show()
self.image.setImage(data)
self.image.scene.sigMouseMoved.connect(self.mouseMoved)
def mouseMoved(self, pos):
x = self.image.getImageItem().mapFromScene(pos).x()
y = self.image.getImageItem().mapFromScene(pos).y()
这会获取 x 和 y 的值,但我不知道如何将它们转换为数组索引或仅以其他方式获取 z 值。如果有比 mapFromScene 更好的方法,那也很高兴知道。
看ImageView.setData
的source code,好像是image
成员用来存放数据的
即使它是 public 成员,它也不是一个很好的 getter 属性 并且没有记录。如果您不喜欢使用它,您可能需要在 class 中存储对数据的引用。也就是说,创建一个 self.data
成员。
def mouseMoved(self, viewPos):
data = self.image.image # or use a self.data member
nRows, nCols = data.shape
scenePos = self.image.getImageItem().mapFromScene(viewPos)
row, col = int(scenePos.y()), int(scenePos.x())
if (0 <= row < nRows) and (0 <= col < nCols):
value = data[row, col]
print("pos = ({:d}, {:d}), value = {!r}".format(row, col, value))
else:
print("no data at cursor")
我正在开发我的第一个 PyQt 程序,感觉我缺少一些关于 ImageItems 或 GraphicsScenes 的明显的东西。我有一个使用 ImageView 与 PyQtGraph 一起显示的 2d ImageItem。我的数据是一个 numpy 数组。当鼠标悬停在图像上的一个点上时,我可以获得 x 和 y 位置值,但也想知道 image/z/array 值。我发现了一个类似的问题,它显示了如何获取 x 和 y 值,而不是图像值。我将我当前与 PyQt4 和 python 2.7 一起使用的代码包含在 Windows 中,将 link 包含在另一个 post.
中https://groups.google.com/forum/#!topic/pyqtgraph/srQqVW9bqPg
import pyqtgraph as pg
self.image = pg.ImageView(self)
self.image.show()
self.image.setImage(data)
self.image.scene.sigMouseMoved.connect(self.mouseMoved)
def mouseMoved(self, pos):
x = self.image.getImageItem().mapFromScene(pos).x()
y = self.image.getImageItem().mapFromScene(pos).y()
这会获取 x 和 y 的值,但我不知道如何将它们转换为数组索引或仅以其他方式获取 z 值。如果有比 mapFromScene 更好的方法,那也很高兴知道。
看ImageView.setData
的source code,好像是image
成员用来存放数据的
即使它是 public 成员,它也不是一个很好的 getter 属性 并且没有记录。如果您不喜欢使用它,您可能需要在 class 中存储对数据的引用。也就是说,创建一个 self.data
成员。
def mouseMoved(self, viewPos):
data = self.image.image # or use a self.data member
nRows, nCols = data.shape
scenePos = self.image.getImageItem().mapFromScene(viewPos)
row, col = int(scenePos.y()), int(scenePos.x())
if (0 <= row < nRows) and (0 <= col < nCols):
value = data[row, col]
print("pos = ({:d}, {:d}), value = {!r}".format(row, col, value))
else:
print("no data at cursor")