2012-11-20 26 views
1

問題: 我有一個PyQt4 GUI應用程序,它必須導入16位灰度圖像數據並對圖像進行一些計算。 Gui有一些控制元素和一個帶有兩個選項卡的QTabWidget()元素,其中一個顯示圖像,另一個顯示錶格中的計算結果。圖像表示是使用Matplotlib完成的。在PyQt GUI中的Matplotlib圖像顯示停止與內存錯誤

在我的應用程序中,我應該能夠打開高達10000x1200像素的圖像,這對應於250MB的圖像數據。不幸的是,在我的應用程序中,我只能打開大小約爲130MB的圖像。當導入並顯示大於8000x8000像素的數據時,我的應用程序將停止顯示內存錯誤。雖然圖像本身的大小爲128MB,但Windows任務管理器顯示694MB用於python任務的已用內存。尺寸爲8000x9000像素的圖像無法再顯示。

我的電腦有4GB的RAM內存。我不認爲這個問題是由於記憶力不足造成的。

問題: 如何讓我的應用程序能夠顯示尺寸高達10000x12500像素灰度16位的圖像?是否有可以修改的Matplotlib內部限制?

我搜索了網絡,但沒有找到任何答案。我最喜歡的問題描述可以在Excessive memory usage in Matplotlib imshow中看到。但是將顯示命令從show()更改爲draw()並沒有幫助。

非常感謝您的幫助。

回答

1

mapplotlib對於帶有圖像的內存效率不高,有多個內部數據副本。

除非你有一個巨大的屏幕(在300ppi,你的圖像是33in x 42in),你的圖像將在顯示時被下采樣。我建議將圖像下采樣到接近實際區域的像素數的大小。您可能會希望根據用戶實際可以看到的內容來編寫一些適應性降低採樣的操作。

相關questionand answer