简单的动图绘制

使用matlab创建一个动图,以sin函数为例:

流程:创建一个figure -> 循环更新,立即显示更新后的图像

clc;
clear;
figure;
x = 0:0.001:2*pi;
for i=0:200
    plot(x,sin(x+i/100*2*pi),'LineWidth',2);
    pbaspect([1 1 1]);
    xlabel('x');
    ylabel('y');
    title(['\phi',num2str(i/100),'*2\pi'])
    drawnow;    % 立即显示
end

简单的视频生成

在Matlab中创建动态视频,以sin函数为例:

基本思路:将图窗中的每一幅静态图都“截取”在一个视频文件里

流程:打开文件 -> 写入视频的每一帧 -> 关闭文件

clc;
clear;
figure;
myVideo = VideoWriter("VideoFile_01");    % 创建一个视频对象
open(myVideo);    % 打开视频文件
x = 0:0.001:2*pi;
for i=0:200
    plot(x,sin(x+i/100*2*pi),'LineWidth',2);
    pbaspect([1 1 1]);
    xlabel('x');
    ylabel('y');
    title(['\phi',num2str(i/100),'*2\pi'])
    drawnow;    % 立即显示
    Frames = getframe(gcf);
    writeVideo(myVideo,Frames);   % 写入视频的每一帧
end
close(myVideo);   % 关闭视频文件

简单的视频帧读取

clc;
clear;
figure;
fileName = 'VideoFile_01.avi';
obj = VideoReader(fileName);% 读取一个视频对象
numFrames = obj.NumFrames;  % 获取视频帧数
for j =1:numFrames
    frame = read(obj,j);    % 读取一个或多个视频帧
    imshow(frame);			% 显示该帧的图像
    % imwrite(frame,strcat(num2str(j),'.jpg')); % 保存每帧图像
end


% 读取视频帧的第二种方法,使用hasFrame判断是否还有下一个视频帧
while hasFrame(obj)
    frame = read(obj);
end

发表评论