getframe
図の内容を使用しsaveas
て、さらに処理するためにラスターイメージに保存する代わりの方法はありますか?
アプローチ1:getframe
h = figure('visible', 'off');
a = axes('parent', h);
% render using `scatter3()` or other plot function.
content = frame2im(getframe(h));
これには、呼び出しで画面キャプチャを実行する図を表示するという重大な欠点がありgetframe()
、ループでそのようなレンダリングを実行する場合(つまりcontent
、各反復でビデオフレームとして保存する場合)に問題があります。
アプローチ2:saveas
h = figure('visible', 'off');
a = axes('parent', h);
% render using `scatter3()` or other plot function.
saveas(h, '/path/to/file.png');
content = imread(/path/to/file.png');
このアプローチには、ディスクへの書き込みという重大な欠点があります。これは、マルチスレッドアプリケーションでは問題があり、メモリに直接レンダリングするよりも低速です。PNGエンコーダーを呼び出す前に明らかにメモリにレンダリングされるのでsaveas()
、私が望むことは可能ですが、レンダリング部分のみを実行する関数をMATLABドキュメントで見つけることができません。
質問:
任意のaxes
コンテンツをラスターイメージにレンダリングする別の方法を知っていますか?