Matlab 从图像制作电影
请告诉我,我有一个名为(照片)的文件夹,其中包含四个子文件夹(Order1、Order2、Order3、Order4)。每个文件夹包含100个图像。我正在尝试为每个子文件夹制作一部电影。我会买4部电影。我用下面的代码和它从每个文件夹中自动读取图像,创建电影并保存在同一个文件夹中。我有四部电影。问题是在电影中有跳跃,所以图片1在不同的时间在视频中重复多次。如何更正代码?或者,如果有任何其他代码可以完成这项工作Matlab 从图像制作电影,matlab,Matlab,请告诉我,我有一个名为(照片)的文件夹,其中包含四个子文件夹(Order1、Order2、Order3、Order4)。每个文件夹包含100个图像。我正在尝试为每个子文件夹制作一部电影。我会买4部电影。我用下面的代码和它从每个文件夹中自动读取图像,创建电影并保存在同一个文件夹中。我有四部电影。问题是在电影中有跳跃,所以图片1在不同的时间在视频中重复多次。如何更正代码?或者,如果有任何其他代码可以完成这项工作 startpath = pwd; for k = 1:4 folder = f
startpath = pwd;
for k = 1:4
folder = fullfile(startpath, 'Photos', sprintf('Order%d', k));
cd(folder)
Files = dir('*.jpg');
NumFiles= size(Files,1);
Megamind_Images = uint8(zeros([600 1000 3 NumFiles*5]));
VideoObj = VideoWriter('Create_Video.mp4','MPEG-4');
VideoObj.FrameRate = 5;
VideoObj.Quality = 80;
count=1;
for i = 1 : NumFiles
I = imread(Files(i).name);
ResizeImg = imresize(I,[600 1000]);
for j = 1 : 5
Megamind_Images(:,:,:,count)=ResizeImg;
count = count + 1;
end
end
open(VideoObj);
writeVideo(VideoObj, Megamind_Images);
close(VideoObj);
end
您可以将所有需要的图像保存在结构中,然后将其转换为帧并播放该帧。 要将图像转换为帧,可以使用im2frame命令:
f=im2frame(X,map)
将索引图像X和关联的彩色贴图map转换为电影帧f。如果将X指定为整数的
m-by-n
数组,则im2frame使用关联的colormap,map,其中map是[0,1]范围内值的三列数组。贴图的每一行都是一个三元素RGB三元组,用于指定颜色贴图的单一颜色的红色、绿色和蓝色分量。
如果将X指定为m-X-n-X-3 truecolor图像,则贴图是可选的,没有任何效果
f=im2frame(X)
如果X包含索引图像,则使用当前颜色贴图将索引图像X转换为电影帧f
然后在结构中保存所有帧并播放电影:
F(1) = im2frame(X1,map);
F(2) = im2frame(X2,map);
...
F(n) = im2frame(Xn,map);
movie(F)
图片文件名是否遵循模式,以便您可以按顺序生成文件名?谢谢。是的,它从1开始到100,因此您可以在
for ii=1:100
循环中生成文件名,类似于filename=sprintf('picture%d.jpg',ii)代码>,是吗?或者更好,filename=fullfile(startpath,'Photos',sprintf('Order%d',k',sprintf('picture%d.jpg',ii))代码>,为您保留一张cd
。显然,您希望将文件夹包含在VideoObj=VideoWriter(…,'MPEG-4')代码>也是。谢谢。我仍然面临同样的问题。我用电影制作人制作电影,效果很好。但是,我想使用MatLab代码来实现这一点