2012-02-07 2 views
2

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

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 

ответ

1

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

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

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

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

+0

Да, это решение, имеющее дополнительное преимущество, не отображающее ось графика по умолчанию. – shaw2thefloor

2

Вопрос заключается в том, что getframe() sets the figure to visible (вы можете увидеть, что, введя "редактировать GetFrame", строки 100-125). Я не уверен, существует ли какой-либо простой способ делать то, что вы просите, хотя я полностью понимаю вашу потребность.

Смежные вопросы