сделать фильм с осями из изображений матлаб

У меня есть папка с изображениями в формате jpg, и я хочу преобразовать их в фильм, но я также хочу, чтобы в фильме были оси (у изображений нет осей). Мои изображения в оттенках серого. Я что-то сделал, но это неправильно. команда фильм(F,1); показывает фильм, но оси не фиксируются в фильме. Также avi, который я сохраняю, показывает только фильм (движение изображений) без осей. это мой код:

vidObj = VideoWriter('sample.avi');
open(vidObj);
for num_frame=1:40
     %find filename of the image
     filename = sprintf('%s_%d.jpg','new_image/sample_image',num_frame);
     cmap = colormap(gray);
     res = grs2rgb(filename,cmap);%convert image from grayscale to rgb
     F(num_frame)=im2frame(res);
 end
 imshow('new_image/sample_image_1.jpg');%show the first image
 set(gca,'FontSize',14);
 xlabel('Lateral distance [mm]');
 ylabel('Axial distance [mm]');
 xlim([-50 50]);
 ylim([20 105]);
 axis([-50 50 20 105]);
 axis ('on');
 movie(F,1);
 writeVideo(vidObj,F);
 close(vidObj);

в чем ошибка??


person constantinos    schedule 24.11.2014    source источник
comment
Вы пробовали getFrame?   -  person kkuilla    schedule 24.11.2014


Ответы (1)


Проблема в том, что настройка оси, которую вы делаете, используется только в MATLAB и не сохраняется вместе с видео. Чтобы сохранить настройку оси, вы можете использовать getframe для создания нового кадра текущего графика. Я предлагаю следующее:

vidObj = VideoWriter('sample.avi');
open(vidObj);

for num_frame=40:-1:1
    % load image
    filename = sprintf('%s_%d.jpg','new_image/sample_image',num_frame);
    cmap = colormap(gray);
    res = grs2rgb(filename,cmap);

    % create plot
    imshow(res);
    set(gca,'FontSize',14);
    xlabel('Lateral distance [mm]');
    ylabel('Axial distance [mm]');
    xlim([-50 50]);
    ylim([20 105]);
    axis([-50 50 20 105]);
    axis ('on');

    % save current plot as movie frame
    F(num_frame) = getframe(gcf);
end

writeVideo(vidObj,F);
close(vidObj);

Обратите внимание на for num_frame=40:-1:1: это предварительное выделение F на первой итерации, что лучше для скорости (MATLAB не нужно расширять переменную на каждой итерации)

person hbaderts    schedule 24.11.2014