направете филм с оси от изображения в matlab

имам папка с 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