MATLAB | 将图片序列转换为视频文件

2024-02-11  本文已影响0人  知信学源

读取中生成的图片序列,生成视频文件并保存。

%% Title: Video Generator

% Author: 羽墨志

% Date  : 2020-09-17

%% Introduction

% 读入已有图像文件序列生成视频文件并保存到指定文件夹下

% 图片文件信息

image_path = 'image/'; % 图片序列文件位置

image_suffix = '.png'; % 图片文件后缀

image_num = 32; % 图片总数

% 设置视频相关参数

% 视频分辨率由第一帧图片的分辨率确定

video_path = 'videos/'; % 视频文件保存路径

video_name = 'video.avi'; % 视频文件名

frame_rate = 1; % 视频帧率

% vedio = VideoWriter('demo.mp4','MPEG-4'); % 初始化一个MP4文件

% vedio = VideoWriter('demo_tag.avi','Uncompressed AVI'); % 初始化一个不压缩的avi文件

vedio = VideoWriter(strcat(video_path,video_name)); % 初始化一个avi文件

vedio.FrameRate = frame_rate; % 设置视频帧率

open(vedio); % 打开视频文件

% 生成图像并保存

for index = 1 : image_num

    % 拼接图片文件名

    image_name = sprintf('image_%d',index * 8 - 1); % 此处应根据实际的图片编号确定

    image = imread([image_path,image_name,image_suffix]);

    % 拼接文件名并保存图像

    % 生成视频仅需图像数据即可,因此无需保存图片

    % imwrite(image,strcat(path, prefix, num2str(gray_value), suffix), format);

    writeVideo(vedio,image); % 写入视频帧

end

close(vedio); % 关闭视频文件

1.picture into MOV:

clear;clc;close all;

fig=figure;

aviobj=VideoWriter('example.avi');

aviobj.FrameRate=30;%set FrameRate before open it

open(aviobj);

n=30;

x=0:pi/n:2*pi;

y=sin(x);

k=0;

set(fig,'outerposition',get(0,'screensize'));%maximize the window

j=1;

for t=0:pi/n:2*pi

    k=k+1;

    x(k)=t;

    y(k)=sin(t);

    H=plot(x,y,x(k),y(k),'or');

    grid

    MOV=getframe(fig);

    writeVideo(aviobj,MOV);

    fmat(:,j)=getframe;

    j=j+1;

end

close(fig)

close(aviobj)

%% play

movie(fmat,1);

picture into GIF:

clear;close all;clc;

Z = peaks;

surf(Z)

axis tight

Zl=zlim;

for k = 1:20

    surf(cos(2*pi*k/20)*Z,Z)

    zlim(Zl);

    % save to gif

    f = getframe;

    im=frame2im(f);

    [I,map] = rgb2ind(im,256);

    if k==1

        imwrite(I,map,'example.gif','gif','loopcount',inf,'Delaytime',0.02)

    else

        imwrite(I,map,'example.gif','gif','writemode','append','Delaytime',0.02)

    end

end

上一篇 下一篇

猜你喜欢

热点阅读