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

How do I save an image generated by imshow(image) into a variable?

这是我的代码。我想将 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');

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

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 来申请?尽管如此,上述解决方案仍然有效。