matlab如何制作振型动画_matlab 制作gif动画

这篇博客介绍了如何使用MATLAB来制作振型动画,特别是生成GIF格式的动画。通过一个示例程序展示了捕获图窗、将真彩色图像转换为索引图像以及利用imwrite函数写入GIF文件的过程。程序中详细解释了关键步骤和相关参数,如'DelayTime'、'LoopCount'和'WriteMode',以及MATLAB中真彩色图像和索引图像的区别。
摘要由CSDN通过智能技术生成

使用matlab制作一个n帧的gif动画 示意程序

for i = 1:nFrames

% draw stuff

frame = getframe(gcf);

img = frame2im(frame);

[img,cmap] = rgb2ind(img,256);

if i == 1

imwrite(img,cmap,'animation.gif','gif','LoopCount',Inf,'DelayTime',1);

else

imwrite(img,cmap,'animation.gif','gif','WriteMode','append','DelayTime',1);

end

end

Step1:捕获当前图窗并生成索引图像

frame=getframe(gcf)是捕获当前图窗作为影片帧,frame是一个结构体,包含cdata和colormap

cdata是一个存放真彩色图像数据的矩阵,大小为M*N*3

当cdata存放真彩色图像时,colormap=[]

img=frame2im(frame)是将捕获的影片帧转换为图像数据,img为真彩色图像,即从结构体frame中提取出的cdata

因为 不支持将真彩图像写入GIF文件,所以应调用 rgb2ind, 将图像中的 RGB 真彩图像数据转换为索引图像

[X,cmap] = rgb2ind(RGB,Q) 使用具有 Q 种量化颜色的最小方差量化法并加入抖动,将 RGB 图像转换为索引图像 X,关联颜色图为 cmap。

索引图象X矩阵大小为M*N

Step2:调用imwrite函数将索引图像写入gif文件中

语法:imwrite(索引图象,索引图象颜色图,'gif文件名','gif',名称-值对组参数)

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数

以下是本程序使用到的名称-值对组参数

'DelayTime' - 显示下一个图像之前的时滞

显示下一个图像之前的时滞(秒),指定为逗号分隔的对组,包含 'DelayTime' 和范围 [0,655] 内的标量值。0 的值以硬件允许的最快速度显示图像

'LoopCount' - 重复动画的次数

重复动画的次数,指定为以逗号分隔的对组,包含 'LoopCount' 和 [0,65535] 范围内的整数或 Inf 值。如果指定 0,动画将播放一次。如果指定值 1,动画将播放两次,以此类推。Inf 的 LoopCount 值可使动画连续循环

'WriteMode' - 写入模式

写入模式,指定为逗号分隔的对组,包含 'WriteMode' 和 'overwrite' 或 'append'。在 overwrite 模式下,imwrite 覆盖现有文件 filename。在 append 模式下,imwrite 会向现有文件添加单个帧。

相关知识:

MATLAB有三种基本的图像类型:

Truecolor(真彩色图像)——数码相机的格式,广泛用于计算机图形。

Indexed (索引图象)和 scaled indexed (比例索引图象)——经常用来显示科学或者工程数据

真彩色图像

在这种格式的图里,每一个像素由三个数字表示:红,绿,蓝,整个图形由一个M-N-3的三维矩阵表达。图形显示函数和图形处理工具箱将这种矩阵视为一个truecolor图形

矩阵值直接指定了每一个像素的颜色。通过这种表达方式你可以很大程度上控制颜色显示,但是对于工程应用来说它并不是最适合的一种图形格式。

索引图像

为了解决彩色图像消耗空间大的问题,一般应用于色彩构成比较简单的场景,索引图像包括一个数据矩阵X,一个颜色映像矩阵Map。像素颜色由数据矩阵X作为索引指向矩阵Map进行索引。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值