如何将imshow(图像)生成的图像保存到变量中?

时间:2015-06-14 00:22:38

标签: image matlab save imshow

这是我的代码。我想将imshow(img)上显示的图像保存到变量中以便稍后使用。谢谢!

img=imread('image1.bmp');
figure(1), imshow(img);

[r c]=ginput(4);
Bw=roipoly(img,r,c);
% figure,imshow(Bw)
   [R C]=size(Bw);

for i=1:R
    for j=1:C
        if Bw(i,j)==1
            img(i,j)=img(i,j);
        else
            img(i,j)=0;
        end
    end
end
figure,
imshow(img); title ('Output Image');

1 个答案:

答案 0 :(得分:3)

您可以使用经典的getframe / cdata成语。打开图形窗口,只需执行以下操作:

figure;
imshow(img); title('Output Image');
h = getframe;
im = h.cdata;

h是打开的当前帧的句柄,cdata字段包含帧的图像数据。上面的代码将帧图像数据存储到一个名为im的变量中,以供日后使用。

次要评论

设置输出的for循环代码效率有点低。您可以完全向量化这样做,并且您会注意到显着的加速。

此代码:

for i=1:R
    for j=1:C
        if Bw(i,j)==1
            img(i,j)=img(i,j);
        else
            img(i,j)=0;
        end
    end
end

...可以替换为:

img(~BW) = 0;

我也不明白为什么您需要将图像数据存储在imshow的框架中......当img已包含您的数据并且您最终会显示img中包含的数据。为什么不能直接将img用于您的应用程序?尽管如此,上述解决方案仍然有效。