这是我的代码。我想将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');
答案 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
用于您的应用程序?尽管如此,上述解决方案仍然有效。