Могу ли я написать патч Matlab прямо в файл - PullRequest
2 голосов
/ 07 февраля 2012

Я пытаюсь сделать видео из патчей.Видео имеет скорость 25 кадров в секунду, и мой код отображает каждый патч на экране перед записью его в изображение.Я попробовал «видимый», «выключенный» вариант в патче, но это просто приводит к пустым кадрам в моем фильме.Могу ли я использовать функцию исправления для записи в файл, но не для отображения на экране?

for k = 1:length(obj.shape)
    fig = patch('Vertices', obj.shape(k).vertices',...
    'Faces', obj.shape(k).faces', 'FaceColor', [0.8 0.5 0.2],...
    'LineStyle', 'none', 'FaceLighting', 'phong', 'Visible', 'on');
    light('Position', [1 0 0], 'Style', 'infinite');
    View(180, 90);
    f = getframe(gcf);
    close(gcf);
    imwrite(f.cdata, [directory '/frame_' int2str(k) '.jpg'], 'jpg');
end

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Проблема в том, что getframe () устанавливает видимую фигуру (вы можете увидеть это, набрав " edit getframe ", строки 100-125).Я не уверен, существует ли какой-либо прямой способ сделать то, что вы просите, хотя я полностью понимаю вашу потребность.

1 голос
/ 18 августа 2014

Причина, по которой getframe не работает с невидимостью, заключается в том, что он захватывает фактическое содержимое экрана. Вы можете достичь того, что вы хотите, если вы хотите использовать print вместо:

figure
set(gcf, 'Visible', 'off')
for ...
    < draw your animation frame >
    print('-r300', '-djpeg', '[directory '/frame_' int2str(k) '.jpg'])
end

Недостатком является то, что ваше сохраненное изображение не будет выглядеть точно так же, как на экране, потому что оно было сгенерировано механизмом печати Matlab. Вы можете настроить его внешний вид, указав разрешение, установив расположение и размер фигуры на «странице» и т. Д. И т. Д.

Кстати, вероятно, не очень хорошая идея создавать новую фигуру для каждого кадра, просто повторно использовать одну и перезаписывать ее содержимое. Кроме того, для постобработки видео, анимированных GIF и т. Д. Было бы лучше использовать формат файла без потерь, например PNG.

...