Render MATLAB Figur im Speicher

Gibt es alternativen zur Verwendung von getframe und saveas für das speichern der Inhalt einer Abbildung auf ein raster-Bild für die weitere Verarbeitung?

Ansatz 1: getframe

h = figure('visible', 'off');
a = axes('parent', h);

% render using `scatter3()` or other plot function.

content = frame2im(getframe(h));

Dies hat den gravierenden Nachteil zeigen, die Abbildung durchzuführen, eine screen-capture-Aufruf getframe() und es ist problematisch, wenn eine solche render-in einer Schleife (d.h. speichern content bei jeder iteration als video-frame).

Ansatz 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');

Dieser Ansatz hat den gravierenden Nachteil, dass das schreiben auf die Festplatte, was problematisch ist in Multithread-Anwendungen, als auch als langsamer als das Rendern direkt in den Speicher. Da saveas() wird offensichtlich machen, um den Speicher vor dem Aufruf der PNG-encoder, was ich will, ist möglich, aber ich finde keine Funktion, die es in der MATLAB-Dokumentation, führt nur die rendering-Teil.

Frage:

Nicht, kennt Ihr eine Alternative Möglichkeit der Erbringung eines beliebigen axes Inhalt eines raster-Bild?

InformationsquelleAutor der Frage André Caron | 2010-11-09

Schreibe einen Kommentar