如何将 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
来申请?尽管如此,上述解决方案仍然有效。
这是我的代码。我想将 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
来申请?尽管如此,上述解决方案仍然有效。