【问题标题】:Getting imageitem values from pyqtgraph从 pyqtgraph 获取 imageitem 值
【发布时间】:2016-10-27 13:45:40
【问题描述】:

我正在编写我的第一个 PyQt 程序,感觉我缺少一些关于 ImageItems 或 GraphicsScenes 的明显内容。我有一个使用 ImageView 与 PyQtGraph 一起显示的 2d ImageItem。我的数据是一个 numpy 数组。当鼠标悬停在图像上的某个点上时,我可以获得 x 和 y 位置值,但也想知道 image/z/array 值。我发现了一个类似的问题,展示了如何获取 x 和 y 值,但不是图像值。我包含了我目前在 Windows 中与 PyQt4 和 python 2.7 一起使用的代码以及指向另一篇文章的链接。

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 更好的方法,也很高兴知道。

【问题讨论】:

    标签: python pyqt pyqtgraph


    【解决方案1】:

    ImageView.setDatasource code,好像image这个成员是用来存储数据的。

    即使它是一个公共成员,它也不是一个很好的 getter 属性并且没有记录。如果您不喜欢使用它,您可能需要在类中存储对数据的引用。也就是说,创建一个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")
    

    【讨论】:

    • 这是个好主意。它完美地工作。非常感谢。
    猜你喜欢
    • 2020-12-16
    • 2019-09-28
    • 1970-01-01
    • 2016-07-13
    • 2020-07-30
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 2014-05-17
    相关资源
    最近更新 更多