使用matplotlib显示分辨率高于屏幕分辨率的图像

时间:2018-09-24 11:58:50

标签: python-3.x numpy matplotlib screen-resolution sentinel1

我正在尝试使用Python 3.5显示大小为26000(宽)X 17000(高)像素的前哨1卫星图像。我能够将此图像作为数组加载到numpy中,并尝试显示在matplotlib中,但由于显示内存错误而无法执行。屏幕分辨率为1600(宽)X 1200(高)像素。 8GB RAM。我同意它可能由于内存限制而无法显示,但是有什么方法可以显示如此大的图像? 我也看到了许多卫星图像处理软件,例如SNAP(前哨工具箱),它们可以在上述指定的屏幕分辨率下显示如此大的图像,但找不到它们的工作方式。 请帮助。

1 个答案:

答案 0 :(得分:0)

试图创建具有您指定宽度和高度的图像。我的屏幕分辨率是1920 x 1080,FHD

import matplotlib
matplotlib.rcParams['figure.dpi'] = 120
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
from numpy.random import randn
fig, ax = plt.subplots()
data = np.clip(randn(26000, 17000), -1, 1)
cax = ax.imshow(data, interpolation='nearest', cmap=cm.coolwarm)

cbar = fig.colorbar(cax, ticks=[-1, 0, 1])
cbar.ax.set_yticklabels(['< -1', '0', '> 1'])  

plt.show()

图已生成,但是python占用了大约7GB的内存!

enter image description here enter image description here