1

问题:我有一个 PyQt4 GUI 应用程序,它必须导入 16 位灰度图像数据并对图像进行一些计算。Gui 有一些控制元素和一个带有两个选项卡的 QTabWidget() 元素,其中一个显示图像,另一个在表格中表示计算结果。图像表示是使用 Matplotlib 完成的。

在我的应用程序中,我应该能够打开最大 10000x12500 像素的图像,这对应于 250MB 的图像数据。不幸的是,我的应用程序只能打开大约 130MB 大小的图像。导入和显示大于 8000x8000 像素的数据时,我的应用程序停止显示内存错误。虽然图像本身大小为 128MB,但 Windows 任务管理器显示 python 任务使用的内存为 694MB。无法再显示 8000x9000 像素大小的图像。

我的电脑有 4GB 的 RAM 内存。我不认为这个问题是由于内存不足造成的。

问题:如何让我的应用程序显示尺寸最大为 10000x12500 像素灰度 16 位的图像?我可以修改 Matplotlib 内部限制吗?

我搜索了网络,但没有找到任何答案。与我的问题最接近的问题描述可以在 Matplotlib imshow 中的 Excessive memory usage 中看到。但是将显示命令从 show() 更改为 draw() 并没有帮助。

非常感谢您的帮助。

4

1 回答 1

1

mapplotlib对带有图像的内存效率不高,数据有多个内部副本。

除非你有一个巨大的屏幕(在 300ppi 时,你的图像是 33 英寸 x 42 英寸),否则你的图像在显示时会被下采样。我建议将您的图像下采样到更接近实际区域像素数的大小。您可能希望根据用户实际看到的内容编写一些对自适应下采样的操作。

相关问答 _

于 2012-11-20T19:25:24.700 回答