python-3.x - 使用 matplotlib 显示分辨率大于屏幕分辨率的图像
问题描述
我正在尝试使用 Python 3.5 显示尺寸为 26000(宽度)X 17000(高度)像素的 sentinel-1 卫星图像。我能够在 numpy 中将此图像作为数组加载并尝试在 matplotlib 中显示,但由于它给出内存错误而无法执行。屏幕分辨率为 1600(宽度)X 1200(高度)像素。我使用的是 Windows 7 8GB 内存。我同意它可能由于内存限制而无法显示,但有什么办法可以显示如此巨大的图像吗?我也见过很多卫星图像处理软件,比如SNAP(sentinel toolbox),它们可以在上述指定的屏幕分辨率下显示如此巨大的图像,但找不到它们是如何做到的。请帮忙。
解决方案
尝试创建具有您指定的宽度和高度的图像。我的屏幕分辨率是 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 的内存!
推荐阅读
- c# - 统一的目标框架名称是什么?
- java - 如何将数据放入已解析的 JSONObject
- python - 我如何关闭 python 但继续运行
- salesforce - 静态资源图像未在 LWC 中显示
- protractor - 如何使用量角器创建 Azure SQL 数据库连接?
- c - 使用 C 将随机生成的大尺寸矩阵相乘时出错
- javascript - JS提取括号外的所有文本
- visual-studio-code - 语句中间的`ifdef`关键字在vscode中未突出显示
- ios - 地理定位不适用于我的反应原生 iOS 模拟器
- windows - Windows - 查找前缀为 10 个随机字符的所有文件,后跟 images.aspx