したがって、キャンバス上の画像のサイズを変更しようとすると、matplotlib から「RuntimeError: 画像にメモリを割り当てられませんでした」というメッセージが表示されます。画像は、ctypes の PyMem_Malloc を使用してメモリが割り当てられた大きな DICOM (.dcm) ファイルです。ピクセルあたり 16 ビットが割り当てられています (高解像度である必要があります)。問題は、キャンバスのサイズを変更し、次を使用してサイズ変更された画像を描画しようとした後に発生します。
self.view.canvas.draw()
スローされる特定の例外は次のとおりです。
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\matplotlib\backends\backend_wx.py", line 1355, in _onMotion
FigureCanvasBase.motion_notify_event(self, x, y, guiEvent=evt)
File "C:\Python27\lib\site-packages\matplotlib\backend_bases.py", line 1625, in motion_notify_event
self.callbacks.process(s, event)
File "C:\Python27\lib\site-packages\matplotlib\cbook.py", line 265, in process
proxy(*args, **kwargs)
File "C:\Python27\lib\site-packages\matplotlib\cbook.py", line 191, in __call__
return mtd(*args, **kwargs)
File "C:\Python27\lib\site-packages\matplotlib\widgets.py", line 1258, in onmove
self.update()
File "C:\Python27\lib\site-packages\matplotlib\widgets.py", line 1236, in update
self.canvas.restore_region(self.background)
File "C:\Python27\lib\site-packages\matplotlib\backends\backend_agg.py", line 384, in restore_region
renderer = self.get_renderer()
File "C:\Python27\lib\site-packages\matplotlib\backends\backend_agg.py", line 404, in get_renderer
self.renderer = RendererAgg(w, h, self.figure.dpi)
File "C:\Python27\lib\site-packages\matplotlib\backends\backend_agg.py", line 59, in __init__
self._renderer = _RendererAgg(int(width), int(height), dpi, debug=False)
RuntimeError: Could not allocate memory for image
画像自体にこれ以上の割り当ては必要ありませんよね?では、ここで何が問題になるのでしょうか? matplotlib は、キャンバスが保持できるメモリのサイズを制限しますか? 誰かがこの問題を抱えていますか?