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