Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 从图像制作电影_Matlab - Fatal编程技术网

Matlab 从图像制作电影

Matlab 从图像制作电影,matlab,Matlab,请告诉我,我有一个名为(照片)的文件夹,其中包含四个子文件夹(Order1、Order2、Order3、Order4)。每个文件夹包含100个图像。我正在尝试为每个子文件夹制作一部电影。我会买4部电影。我用下面的代码和它从每个文件夹中自动读取图像,创建电影并保存在同一个文件夹中。我有四部电影。问题是在电影中有跳跃,所以图片1在不同的时间在视频中重复多次。如何更正代码?或者,如果有任何其他代码可以完成这项工作 startpath = pwd; for k = 1:4 folder = f

请告诉我,我有一个名为(照片)的文件夹,其中包含四个子文件夹(Order1、Order2、Order3、Order4)。每个文件夹包含100个图像。我正在尝试为每个子文件夹制作一部电影。我会买4部电影。我用下面的代码和它从每个文件夹中自动读取图像,创建电影并保存在同一个文件夹中。我有四部电影。问题是在电影中有跳跃,所以图片1在不同的时间在视频中重复多次。如何更正代码?或者,如果有任何其他代码可以完成这项工作

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代码来实现这一点