我有一个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);
错误是什么?
答案 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不需要在每次迭代时扩展变量)