【问题标题】:How to properly scale/rotate images in pyqtgraph?如何在 pyqtgraph 中正确缩放/旋转图像?
【发布时间】:2018-04-19 05:08:51
【问题描述】:

我在 PyQt5 中的 QGraphicsView 中实现了 pyqtgraph。当我以以下方式显示图像时,它会被拉伸并以与屏幕相同的纵横比展开。我该如何解决这个问题?

image = pg.ImageItem(asarray(Image.open('pic.png')) )      
self.graphicsView.addItem(image)
image.rotate(270) 

编辑:找到了如何旋转图像,所以我用解决方案更新了问题。现在我只是想正确地扩展它。

【问题讨论】:

    标签: python pyqt5 qgraphicsview pyqtgraph


    【解决方案1】:

    你可能想要这样的东西:

    import pyqtgraph as pg
    from PIL import Image
    from numpy import asarray
    
    app = pg.mkQApp()
    
    # Set up a window with ViewBox inside
    gv = pg.GraphicsView()
    vb = pg.ViewBox()
    gv.setCentralItem(vb)
    gv.show()
    
    # configure view for images
    vb.setAspectLocked()
    vb.invertY()
    
    # display image
    img_data = asarray(Image.open('/home/luke/tmp/graph.png'))
    image = pg.ImageItem(img_data, axisOrder='row-major')
    vb.addItem(image)
    

    这里设置图像缩放/方向的重要部分是:

    • 使用ImageItem(axisOrder='row-major'),因为图像文件以行优先顺序存储
    • vb.invertY() 因为图像文件的 +y 轴指向下方
    • vb.setAspectLocked() 保持像素正方形

    【讨论】:

      【解决方案2】:

      我改用np.rot90(),它更快且可使用cython

      image = pg.ImageItem(np.rot90(np.asarray(Image.open('pic.png'))))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-07
        • 1970-01-01
        • 2018-10-17
        • 1970-01-01
        相关资源
        最近更新 更多