首页 > 解决方案 > Matlab 从 .fig 格式的子图中提取图像

问题描述

如何从子图中提取图像。无花果与绘制在其中的图像?请参阅图形的子图,图像格式为 png https://ibb.co/60jx8kX

我尝试使用此代码,但它没有给我所需的输出。

fig = openfig( 'IC_01.fig' , 'new' , 'invisible' );
imgs = findobj(fig, 'type' , 'image' );
thiscmap = get(fig, 'colormap' );

for K = 1 : length(imgs)
    thisimg = get(imgs(K), 'CData' );
    % now do something with it for illustration purposes
    thisfilename = sprintf( 'extracted_image_%03d.jpg' , K);
    imwrite(thisimg, thiscmap, thisfilename);
end

谢谢你。

标签: matlabmatlab-figuremat

解决方案


这是一种将数据从第一张图像获取到您想要的图像的方法,第一行与您所做的类似:

f=openfig('IC_02.fig')
imgs = findobj(f, 'type' , 'image' );
for n=1:numel(imgs)
    C{n}=imgs(n).CData;
    X{n}=imgs(n).XData; 
    Y{n}=imgs(n).YData; 
    cmap{n}=imgs(n).Parent.Colormap; % not assuming it the same for all axes... 
end

现在一些图像将成为您想要的图像的颜色条(通常一个接一个)。然后,我们采用颜色条的 Ydata 来设置您想要的图像的 caxis 限制......对于您的情况,数据位于第四个“图像”对象中,并且限制来自第三个“图像”(颜色条)。 ..

imagesc(X{4},Y{4},C{4})
colormap(cmap{4})
set(gca,'Ydir','normal')
caxis([Y{3}(1) Y{3}(2)]) 

在此处输入图像描述


推荐阅读