matlab之getframe

  1. 功能:将轴或图形捕获为影片帧
  2. 函数:F = getframe  F = getframe(ax)  F = getframe(fig)  F = getframe(___,rect)
  3. 介绍:
    • F = getframe捕获当前轴作为电影帧出现在屏幕上。 F是包含图像数据的结构。 getframe捕获的轴尺寸与屏幕上显示的尺寸相同。 它不会捕获刻度标签或轴轮廓之外的其他内容。
      • %创建一个随机数据图。 捕获轴并返回图像数据。 getframe捕获轴的内部和轴的轮廓。 它不会捕获超出轴轮廓的内容。
         plot(rand(5))
         F = getframe;
         %F是具有包含捕获的图像数据的字段cdata的结构。 使用imshow显示捕获的图像数据。 
        figure imshow(F.cdata)

      • %指定要捕获的矩形区域
        %捕获轴的内部以及每个方向上30像素的边距。 要在捕获帧中包含刻度线标签,必须增加边距。 根据刻度标签的大小,可能需要调整边距。
        plot(rand(5))
        
        
        
        %将轴单位更改为像素,然后返回当前轴位置。 位置向量的第三个和第四个元素指定以像素为单位的轴的宽度和高度。
        drawnow
        ax = gca;
        ax.Units = 'pixels';
        pos = ax.Position
        
        
        %创建一个四元素向量rect,该向量定义覆盖轴和所需边距的矩形区域。 rect的前两个元素相对于轴的左下角指定矩形的左下角。 rect的最后两个元素指定矩形的宽度和高度。 
        %将轴单位重置为默认值“归一化”。
        marg = 30;
        rect = [-marg, -marg, pos(3)+2*marg, pos(4)+2*marg];
        F = getframe(gca,rect);
        ax.Units = 'normalized';
        
        
        
        figure
        imshow(F.cdata)
        

          

    • F = getframe(ax)捕获由ax标识的轴,而不是当前轴。
      • %用两个子图创建一个图形。 在上方的子图中,绘制一条蓝线。 在下部子图中,画一条红线
        ax1 = subplot(2,1,1);
        plot(1:10,'b')
        ax2 = subplot(2,1,2);
        plot(1:10,'r')
        
        
        %捕获下部子图的内容。 getframe捕获子图的内部和边界。 它不会捕获刻度值或超出子图轮廓的标签。
        F = getframe(ax2);
        
        
        figure
        imshow(F.cdata)
        

          

    • F = getframe(fig)捕获由fig标识的图形。 如果要捕获图形窗口的整个内部,包括轴标题,标签和刻度线,请指定一个图形。 捕获的电影帧不包含图形菜单和工具栏。
      • %创建表面图。 捕获图形窗口的内部,不包括菜单和工具栏。
        surf(peaks)
        F = getframe(gcf);
        
        
        %F是具有包含捕获的图像数据的字段cdata的结构。使用imshow显示捕获的图像数据。
        figure
        imshow(F.cdata)  
        

          

    • F = getframe(,rect)获取由rect定义的矩形内的区域。将rect指定为表单的四个元素向量[左下宽高]。此选项可与前面语法中的ax或fig输入参数一起使用。
原文地址:https://www.cnblogs.com/andrew-address/p/12790530.html