matlab 制作gif动画
使用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进行索引。
原文地址:https://www.cnblogs.com/jun-phy/p/12773470.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法