【问题标题】:Copy values of an opened figure into a Matrix Matlab将打开的图形的值复制到矩阵 Matlab
【发布时间】:2015-05-06 06:41:19
【问题描述】:

我有一个保存的 matlab .fig 文件,其中包含一个图像,我使用 openfig 打开无花果。我在问如何复制矩阵中的数字值(比如说img,即480x640 double)以开始对其进行一些处理。如果有人可以请指教。

【问题讨论】:

  • figure values 到底是什么?
  • @scmg 问题已使用 fig 文件更新

标签: matlab matlab-figure


【解决方案1】:

很简单。假设你打开了你的图,首先你需要确保你有一个当前图的句柄,所以执行:

h = gcf;

图中绘制的数据通常是axes 对象的子对象。轴对象本身是图形的子对象,因此您需要先访问一系列分层成员,然后才能获得所需内容。因此,您需要获取 axes 句柄,然后获取 axes 句柄的子句柄 绘制的数据通常是 Axes 对象的“孩子”。轴对象本身就是图形的子对象。您可以按如下方式了解它们的层次结构:

axesObjs = get(h, 'Children');  %axes handles
dataObjs = get(axesObjs, 'Children'); %handles to low-level graphics objects in axes   

打开你的图,我看到你的数据是Image类型的。为了访问Image 数据,您需要访问CData 字段,因此您需要这样做:

data = get(dataObjs, 'CData');

data 现在应该包含您的图像数据。因此,这是完整的代码,您可以将其复制并粘贴到 MATLAB 中:

openfig('input.fig')
h = gcf;
axesObjs = get(h, 'Children');
dataObjs = get(axesObjs, 'Children');
data = get(dataObjs, 'CData');

以上适用于 MATLAB R2013b。如果您使用的是 MATLAB R2014a 及更高版本,则使用点符号代替 get 函数,因此:

openfig('input.fig')
h = gcf;
axesObjs = h.Children;
dataObjs = axesObjs.Children;
data = dataObjs.CData;

【讨论】:

  • @shepherd - 没问题。
  • 您知道如何将图像设置为colormap(jet),其中只考虑非零值以便颜色条正确?
  • 是的,将所有零值设置为NaN,然后对其应用jet 颜色映射。做这样的事情:data(data == 0) = NaN; imagesc(data); colormap(jet); colorbar;.
猜你喜欢
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多