首页 > 解决方案 > 使用 matplotlib 显示分辨率大于屏幕分辨率的图像

问题描述

我正在尝试使用 Python 3.5 显示尺寸为 26000(宽度)X 17000(高度)像素的 sentinel-1 卫星图像。我能够在 numpy 中将此图像作为数组加载并尝试在 matplotlib 中显示,但由于它给出内存错误而无法执行。屏幕分辨率为 1600(宽度)X 1200(高度)像素。我使用的是 Windows 7 8GB 内存。我同意它可能由于内存限制而无法显示,但有什么办法可以显示如此巨大的图像吗?我也见过很多卫星图像处理软件,比如SNAP(sentinel toolbox),它们可以在上述指定的屏幕分辨率下显示如此巨大的图像,但找不到它们是如何做到的。请帮忙。

标签: python-3.xnumpymatplotlibscreen-resolutionsentinel1

解决方案


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

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 的内存!

在此处输入图像描述 在此处输入图像描述


推荐阅读