PyQt GUI中显示的Matplotlib图像因内存错误而停止

时间:2012-11-20 15:48:23

标签: memory matplotlib pyqt4

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

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

我的电脑有4GB的RAM内存。我不认为问题是由于记忆力不足而发生的。

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

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

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

除非你有一个庞大的屏幕(300ppi,你的图像是33英寸x 42英寸),你的图像将在显示时进行下采样。我建议将图像下采样到一个更接近实际区域像素数的大小。您可能希望根据用户实际可以看到的内容,自适应下采样。<​​/ p>

相关question and answer