2014-11-24 168 views
0

我有一个JPG图像文件夹,我想将它们转换成电影,但我也想在电影上有轴(图像没有轴)。我的图像是灰度.i我做了一些事情,但这是不正确的。命令电影(F,1);显示电影,但轴不固定在电影上。我保存的AVI仅显示没有轴的电影(图像的运动)。这是我的代码:使用图像轴制作电影matlab

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); 

是什么错误?

+0

你有预分配F尝试[getFrame](http://uk.mathworks.com/help/matlab/ref/getframe.html?nocookie=true)? – kkuilla 2014-11-24 13:00:19

回答

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:这是在第一次迭代,这是更好的速度(MATLAB不需要变量在每次迭代扩展)