用图像matlab制作带有轴的电影

时间:2014-11-24 12:16:45

标签: image matlab movie axes

我有一个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);

错误是什么?

1 个答案:

答案 0 :(得分:2)

问题是您正在进行的轴设置仅在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不需要在每次迭代时扩展变量)