Matlab中getframe函数用法

目录

语法

说明

示例

捕获当前坐标区的内容

捕获图窗内容

指定要捕获的矩形区域

计算要包含标题和标签的区域

捕获特定坐标区

记录帧并播放影片


        getframe函数的功能是捕获坐标区或图窗作为影片帧。

语法

F = getframe
F = getframe(ax)
F = getframe(fig)
F = getframe(___,rect)

注意:

        以下是有关 cdata 的大小的一些重要注意事项:

  • 如果查询 getframe 捕获的区域(图窗、坐标区或由 rect 指定的区域)的大小,则以像素为单位的大小可能与 cdata 中的元素数不匹配。这种差异是因为 cdata 中的元素数取决于屏幕分辨率(以及操作系统设置),而 MATLAB® 中的像素数可能不对应于屏幕上的实际像素数。

  • 从 R2015b 开始,如果使用高分辨率系统,则cdata的大小可能大于在以前版本中或在其他系统上的大小。

说明

F= getframe 捕获显示在屏幕上的当前坐标区作为影片帧。F 是一个包含图像数据的结构体。getframe 按照屏幕上显示的大小捕获这些坐标区。它并不捕获坐标区轮廓外部的刻度标签或其他内容。

F= getframe(ax) 捕获 ax 标识的坐标区而非当前坐标区。

F= getframe(fig) 捕获由 fig 标识的图窗。如果您需要捕获图窗窗口的整个内部区域(包括坐标区标题、标签和刻度线),则指定一个图窗。捕获的影片帧不包括图窗菜单和工具栏。

F= getframe(___,rect ) 捕获 rect 定义的矩形内的区域。指定 rect 作为 [left bottom width height] 形式的四元素向量。将此选项用于上一语法中的 ax 或 fig 输入参数。

示例

捕获当前坐标区的内容

        创建一个随机数据图。捕获坐标区并返回图像数据。getframe捕获坐标区的内部区域和坐标区轮廓。它并不捕获延伸到坐标区轮廓之外的内容。

plot(rand(10))
F = getframe;

如图所示:

        F是一个结构体,其中包含的cdata字段中包含捕获的图像数据。使用imshow显示捕获的图像数据。

figure
imshow(F.cdata)

如图所示:

捕获图窗内容

        创建一个曲面图。捕获图窗窗口的内部区域,不包括菜单和工具栏。

surf(peaks)
F = getframe(gcf);

        如图所示:

        F是一个结构体,其中包含的cdata字段中包含捕获的图像数据。使用imshow显示捕获的图像数据。

figure
imshow(F.cdata)

如图所示:

指定要捕获的矩形区域

        捕获坐标区内部区域以及每个方向上 30 像素的边距。需要添加边距捕获帧中才能包括刻度标签。根据刻度标签的大小,可能需要调整边距。创建一个随机数据图。

plot(rand(5))

如图所示:

        将坐标区单位更改为像素并返回当前坐标区位置。位置向量的第三和第四个元素指定坐标区宽度和高度(以像素为单位)。

drawnow
ax = gca;
ax.Units = 'pixels';
pos = ax.Position
pos =

   73.8000   47.2000  434.0000  342.3000

        创建一个四元素向量 rect,以定义涵盖坐标区以及所需边距的矩形区域。rect 的前两个元素相对于坐标区左下角指定矩形左下角。rect 的最后两个元素指定矩形的宽度和高度。将坐标区单位重置为 'normalized' 的默认值。

marg = 30;
rect = [-marg, -marg, pos(3)+2*marg, pos(4)+2*marg];
F = getframe(gca,rect);
ax.Units = 'normalized';

        使用 imshow 显示捕获的图像数据。

figure
imshow(F.cdata)

如图所示:

计算要包含标题和标签的区域

        计算坐标区周围的边距,以使捕获的图像数据包括标题、坐标区标签和刻度标签。创建一个带有标题和 x 轴标签的绘图。

plot(rand(5))
xlabel('x values')
title('Plot of Random Data')

如图所示:

        将坐标区单位更改为像素并存储坐标区的Position 和 TightInset 属性值。TighInset属性是一个 [left bottom right top]形式的四元素向量。这些值是坐标区周围用于刻度值和文本标签的边距。

drawnow
ax = gca;
ax.Units = 'pixels';
pos = ax.Position;
ti = ax.TightInset;

        创建一个四元素向量rect,以定义涵盖坐标区以及自动计算的边距的矩形区域。rect的前两个元素相对于坐标区左下角指定矩形左下角。rect的最后两个元素指定矩形的宽度和高度。

rect = [-ti(1), -ti(2), pos(3)+ti(1)+ti(3), pos(4)+ti(2)+ti(4)];
F = getframe(ax,rect);

        使用 imshow 显示捕获的图像数据。

figure
imshow(F.cdata)

如图所示:

捕获特定坐标区

        从 R2019b开始,可以使用tiledlayout和nexttile函数显示分块图。调用tiledlayout函数以创建一个 2×1 分块图布局。调用nexttile函数以创建坐标区对象 ax1 和 ax2。在每个坐标区中绘制一个线条。

tiledlayout(2,1)
ax1 = nexttile;
plot(1:10,'b')
ax2 = nexttile;
plot(1:10,'r')

        ​​​​捕获下坐标区的内容。getframe捕获绘图的内部区域和边框。它并不捕获延伸到绘图轮廓外部的刻度值或标签。

F = getframe(ax2);

        使用 imshow 显示捕获的图像数据。

figure
imshow(F.cdata)

如图所示:

记录帧并播放影片

        通过循环使用getframe记录peaks函数振荡的帧。预分配一个数组以存储影片帧。

Z = peaks;
surf(Z)
axis tight manual
ax = gca;
ax.NextPlot = 'replaceChildren';

loops = 40;
F(loops) = struct('cdata',[],'colormap',[]);
for j = 1:loops
    X = sin(j*pi/10)*Z;
    surf(X,Z)
    drawnow
    F(j) = getframe(gcf);
end

        播放影片两次。

fig = figure;
movie(fig,F,2)

像素

        以像素为单位的距离不依赖 Windows® 和 Macintosh 系统上的系统分辨率:

  • 在 Windows 系统上,一个像素是 1/96 英寸。

  • 在 Macintosh 系统上,一个像素是 1/72 英寸。

        在 Linux® 系统上,一个像素的大小由系统分辨率确定。

提示

  • 为了在使用 getframe 值获得最快的性能,请确保图窗在屏幕上可见。如果图窗不可见,getframe仍可捕获该图窗,但性能可能会减慢。

  • 为了更好地控制图像数据的分辨率,请改用print函数。带有 print 的cdata输出参数返回图像数据。resolution输入参数控制图像的分辨率。

  • 19
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
matlab函数大全-matlab函数大全.doc 比较白痴的东西,不过对初学者也许有用,特分享一下。不要喷我哦!函数具体用法可以用help查一下。附件内容与下面一样的。 Aabs 绝对值、模、字符的ASCII码值 acos 反余弦 acosh 反双曲余弦 acot 反余切 acoth 反双曲余切 acsc 反余割 acsch 反双曲余割 align 启动图形对象几何位置排列工具 all 所有元素非零为真 angle 相角 ans 表达式计算结果的缺省变量名 any 所有元素非全零为真 area 面域图 argnames 函数M文件宗量名 asec 反正割 asech 反双曲正割 asin 反正弦 asinh 反双曲正弦 assignin 向变量赋值 atan 反正切 atan2 四象限反正切 atanh 反双曲正切 autumn 红黄调秋色图阵 axes 创建轴对象的低层指令 axis 控制轴刻度和风格的高层指令 B b bar 二维直方图 bar3 三维直方图 bar3h 三维水平直方图 barh 二维水平直方图 base2dec X进制转换为十进制 bin2dec 二进制转换为十进制 blanks 创建空格串 bone 蓝色调黑白色图阵 box 框状坐标轴 break while 或for 环断指令 brighten 亮度控制 C c capture (3版以前)捕获当前图形 cart2pol 直角坐标变为极或柱坐标 cart2sph 直角坐标变为球坐标 cat 串接成高维数组 caxis 色标尺刻度 cd 指定当前目录 cdedit 启动用户菜单、控件回调函数设计工具 cdf2rdf 复数特征值对角阵转为实数块对角阵 ceil 向正无穷取整 cell 创建元胞数组 cell2struct 元胞数组转换为构架数组 celldisp 显示元胞数组内容 cellplot 元胞数组内部结构图示 char 把数值、符号、内联类转换为字符对象 chi2cdf 分布累计概率函数 chi2inv 分布逆累计概率函数 chi2pdf 分布概率密度函数 chi2rnd 分布随机数发生器 chol Cholesky分解 clabel 等位线标识 cla 清除当前轴 class 获知对象类别或创建对象 clc 清除指令窗 clear 清除内存变量和函数 clf 清除图对象 clock 时钟 colorcube 三浓淡多彩交叉色图矩阵 colordef 设置色彩缺省值 colormap 色图 colspace 列空间的基 close 关闭指定窗口 colperm 列排序置换向量 comet 彗星状轨迹图 comet3 三维彗星轨迹图 compass 射线图 compose 求复合函数 cond (逆)条件数 condeig 计算特征值、特征向量同时给出条件数 condest 范 -1条件数估计 conj 复数共轭 contour 等位线 contourf 填色等位线 contour3 三维等位线 contourslice 四维切片等位线图 conv 多项式乘、卷积 cool 青紫调冷色图 copper 古铜调色图 cos 余弦 cosh 双曲余弦 cot 余切 coth 双曲余切 cplxpair 复数共轭成对排列 csc 余割 csch 双曲余割 cumsum 元素累计和 cumtrapz 累计梯形积分 cylinder 创建圆柱 D d dblquad 二重数值积分 deal 分配宗量 deblank 删去串尾部的空格符 dec2base 十进制转换为X进制 dec2bin 十进制转换为二进制 dec2hex 十进制转换为十六进制 deconv 多项式除、解卷 delaunay Delaunay 三角剖分 del2 离散Laplacian差分 demo Matlab演示 det 行列式 diag 矩阵对角元素提取、创建对角阵 diary Matlab指令窗文本内容记录 diff 数值差分、符号微分 digits 符号计算设置符号数值的精度 dir 目录列表 disp 显示数组 display 显示对象内容的重载函数 dlinmod 离散系统的线性化模型 dmperm 矩阵Dulmage-Mendelsohn 分解 dos 执行DOS 指令并返回结果 double 把其他类型对象转换为双精度数值 drawnow 更新事件队列强迫Matlab刷新屏幕 dsolve 符号计算解微分方程 E e echo M文件被执行指令的显示 edit 启动M文件编辑器 eig 求特征值和特征向量 eigs 求指定的几个特征值 end 控制流FOR等结构体的结尾元素下标 eps 浮点相对精度 error 显示出错信息并断执行 errortrap 错误发生后程序是否继续执行的控制 erf 误差函数 erfc 误差补函数 erfcx 刻度误差补函数 erfinv 逆误差函数 errorbar 带误差限的曲线图 etreeplot 画消去树 串演算指令 in 跨空间串演算指令 exist 检查变量或函数是否已定义 exit 退出Matlab环境 exp 指数函数 expand 符号计算的展开操作 expint 指数积分函数 expm 常用矩阵指数函数 expm1 Pade法求矩阵指数 expm2 Taylor法求矩阵指数 expm3 特征值分解法求矩阵指数 eye 单位阵 ezcontour 画等位线的简捷指令 ezcontourf 画填色等位线的简捷指令 ezgraph3 画表面图的通用简捷指令 ezmesh 画网线图的简捷指令 ezmeshc 画带等位线的网线图的简捷指令 ezplot 画二维曲线的简捷指令 ezplot3 画三维曲线的简捷指令 ezpolar 画极坐标图的简捷指令 ezsurf 画表面图的简捷指令 ezsurfc 画带等位线的表面图的简捷指令 F f factor 符号计算的因式分解 feather 羽毛图 feedback 反馈连接 f 执行由串指定的函数 fft 离散Fourier变换 fft2 二维离散Fourier变换 fftn 高维离散Fourier变换 fftshift 直流分量对的谱 fieldnames 构架域名 figure 创建图形窗 fill3 三维多边形填色图 find 寻找非零元素下标 findobj 寻找具有指定属性的对象图柄 findstr 寻找短串的起始字符下标 findsym 机器确定内存的符号变量 finverse 符号计算求反函数 fix 向零取整 flag 红白蓝黑交错色图阵 fliplr 矩阵的左右翻转 flipud 矩阵的上下翻转 flipdim 矩阵沿指定维翻转 floor 向负无穷取整 flops 浮点运算次数 flow Matlab提供的演示数据 fmin 求单变量非线性函数极小值点(旧版) fminbnd 求单变量非线性函数极小值点 fmins 单纯形法求多变量函数极小值点(旧版) fminunc 拟牛顿法求多变量函数极小值点 fminsearch 单纯形法求多变量函数极小值点 fnder 对样条函数求导 fnint 利用样条函数求积分 fnval 计算样条函数区间内任意一点的值 fnplt 绘制样条函数图形 fopen 打开外部文件 for 构成for环用 format 设置输出格式 fourier Fourier 变换 fplot 返函绘图指令 fprintf 设置显示格式 fread 从文件读二进制数据 fsolve 求多元函数的零点 full 把稀疏矩阵转换为非稀疏阵 funm 计算一般矩阵函数 funtool 函数计算器图形用户界面 fzero 求单变量非线性函数的零点 G g gamma 函数 gammainc 不完全 函数 gammaln 函数的对数 gca 获得当前轴句柄 gcbo 获得正执行"回调"的对象句柄 gcf 获得当前图对象句柄 gco 获得当前对象句柄 geomean 几何平均值 get 获知对象属性 getfield 获知构架数组的域 getframe 获取影片的帧画面 ginput 从图形窗获取数据 global 定义全局变量 gplot 依图论法则画图 gradient 近似梯度 gray 黑白灰度 grid 画分格线 griddata 规则化数据和曲面拟合 gtext 由鼠标放置注释文字 guide 启动图形用户界面交互设计工具 H h harmmean 调和平均值 help 在线帮助 helpwin 交互式在线帮助 helpdesk 打开超文本形式用户指南 hex2dec 十六进制转换为十进制 hex2num 十六进制转换为浮点数 hidden 透视和消隐开关 hilb Hilbert矩阵 hist 频数计算或频数直方图 histc 端点定位频数直方图 histfit 带正态拟合的频数直方图 hold 当前图上重画的切换开关 horner 分解成嵌套形式 hot 黑红黄白色图 hsv 饱和色图 附件:[post] matlab函数大全.doc [/post]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值