Существуют ли альтернативы использованию 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');
Этот подход имеет серьезный недостаток записи на диск, что проблематично в многопоточных приложениях, а также медленнее, чем рендеринг непосредственно в память. Поскольку saveas()
, очевидно, будет отображаться в памяти перед вызовом кодировщика PNG, то, что я хочу, возможно, но я не могу найти какую-либо функцию в документации MATLAB, которая выполняет только часть рендеринга.
Вопрос:
Знаете ли вы альтернативный способ рендеринга произвольного содержимого axes
в растровое изображение?