Существуют ли альтернативы использованию 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
контента в растровое изображение?