【问题标题】: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'))))