1

問題: 16 ビットのグレースケール画像データをインポートし、画像に対していくつかの計算を行う必要がある PyQt4 GUI アプリケーションを持っています。Gui には、いくつかのコントロール要素と、2 つのタブを持つ QTabWidget() 要素があり、1 つは画像を表示し、もう 1 つは計算結果をテーブルで表します。画像表現は Matplotlib を使用して行われます。

私のアプリケーションでは、250MB の画像データに相当する最大 10000x12500 ピクセルの画像を開くことができるはずです。残念ながら、私のアプリケーションでは、約 130MB のサイズの画像しか開くことができません。8000x8000 ピクセルを超えるデータをインポートして表示すると、アプリケーションでメモリ エラーが表示されなくなります。画像自体のサイズは 128MB ですが、Windows タスク マネージャーでは、Python タスクに 694MB の使用済みメモリが表示されます。サイズが 8000x9000 ピクセルの画像は表示できなくなりました。

私のコンピュータには 4GB の RAM メモリが搭載されています。メモリ不足による問題は発生していないと思います。

質問: アプリケーションで最大 10000x12500 ピクセルのグレースケール 16 ビット サイズの画像を表示するにはどうすればよいですか? 変更できる Matplotlib の内部制限はありますか?

ネットを検索しましたが、答えが見つかりませんでした。私が持っているものに最も近い問題の説明は、Matplotlib imshow での過剰なメモリ使用量で見ることができます。しかし、表示コマンドを show() から draw() に変更しても役に立ちませんでした。

助けてくれてありがとう。

4

1 に答える 1

1

mapplotlib画像を含むメモリでは効率的ではありません。データの内部コピーが複数あります。

巨大な画面 (300ppi で、画像は 33 インチ x 42 インチ) を持っていない限り、画像は表示時にダウンサンプリングされます。実際の領域のピクセル数に近いサイズに画像をダウンサンプリングすることをお勧めします。ユーザーが実際に見ることができるものに基づいて、アダプティブ ダウン サンプリングに何かを書きたいと思うでしょう。

関連する質問 と回答

于 2012-11-20T19:25:24.700 に答える