将打开的图形的值复制到Matrix Matlab中

时间:2015-05-06 06:41:19

标签: matlab matlab-figure

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

1 个答案:

答案 0 :(得分:4)

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

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;