我正在尝试在pyqtgraph中绘制tiff图像。
import numpy as np
import gdal
import pyqtgraph as pg
from PyQt4 import QtCore
gd = gdal.Open('myImage.tif')
data = np.array(gd.GetRasterBand(1).ReadAsArray())
pg.plot(data, title="my picture")
if __name__ == '__main__':
import sys
if sys.flags.interactive != 1 or not hasattr(QtCore, 'PYQT_VERSION'):
pg.QtGui.QApplication.exec_()
我得到了错误
Traceback (most recent call last):
File "C:/Users/justin/PycharmProjects/pyqtgraph_examples/geotiff.py", line 18, in <module>
pg.plot(data, title="my picture")
File "C:\Python33\lib\site-packages\pyqtgraph\__init__.py", line 295, in plot
w.plot(*args, **dataArgs)
File "C:\Python33\lib\site-packages\pyqtgraph\graphicsItems\PlotItem\PlotItem.py", line 639, in plot
item = PlotDataItem(*args, **kargs)
File "C:\Python33\lib\site-packages\pyqtgraph\graphicsItems\PlotDataItem.py", line 165, in __init__
self.setData(*args, **kargs)
File "C:\Python33\lib\site-packages\pyqtgraph\graphicsItems\PlotDataItem.py", line 341, in setData
dt = dataType(data)
File "C:\Python33\lib\site-packages\pyqtgraph\graphicsItems\PlotDataItem.py", line 679, in dataType
raise Exception('array shape must be (N,) or (N,2); got %s instead' % str(obj.shape))
Exception: array shape must be (N,) or (N,2); got (788, 744) instead
print(data.size)返回(788,744)。
我在想我的numpy数组是错误的形式,或者我使用了错误的pyqtgraph函数,但我不熟悉它们以及下一步要尝试的内容。
答案 0 :(得分:3)
我想你想要pyqtgraph.image。例如,这是脚本的修改版本(我安装了PySide):
import numpy as np
import pyqtgraph as pg
from PySide import QtCore
from scipy.ndimage import gaussian_filter
data = np.random.beta(0.5, 3, size=(500, 500))
data = gaussian_filter(data, sigma=(12, 3))
pg.image(data, title="my picture")
if __name__ == '__main__':
import sys
if sys.flags.interactive != 1 or not hasattr(QtCore, 'PYQT_VERSION'):
pg.QtGui.QApplication.exec_()