我正在使用imagesc来获得整体图像。但是,我只是设法显示它,然后我必须手动保存它,我无法找到一种方法来保存脚本中的图像与imwrite或imsave。它有可能吗?
代码:
image='C:\image.jpg';
in1= imread((image));
in=rgb2gray(in1);
in_in= cumsum(cumsum(double(in)), 2);
figure, imagesc(in_in);
答案 0 :(得分:6)
您还可以使用 print 命令。例如,如果您正在运行多个图像并想要序列化并保存它们,则可以执行以下操作:
% Create a new figure
figure (fig_ct)
% Plot your figure
% save the figure to your working directory
eval(['print -djpeg99 ' num2str(fig_ct)]);
% increment the counter for the next figure
fig_ct = fig_ct+1;
其中fig_ct
只是一个计数器。如果您有兴趣以不同于jpeg的其他格式保存它,请查看文档,您可以执行tiff,eps等等。
希望这有帮助
答案 1 :(得分:4)
我相信您的问题可能在于您正在保存不在[0 1]范围内的双矩阵。如果您阅读documentation,就会看到
如果输入数组是double类,并且图像是灰度或 RGB彩色图像,imwrite假设动态范围是[0,1]和 在将数据写入文件之前自动将数据缩放255 8位值。
你可以将它自己转换为支持的类型(即逻辑,uint8,uint16或double)或者在[0 1]范围内将其转换为例如将其除以max:
imwrite (in_in / max (in_in(:)), 'out.jpg');
您可能仍希望进一步增加所保存图像的动态范围。例如,在除以最大值之前减去最小值
in_in = in_in - min (in_in(:));
in_in = in_in / max (in_in(:));
imwrite (in_in, 'out.jpg');
如果您想要imagesc
显示
imagesc
功能可将图像数据缩放到当前色彩映射的整个范围。
我不知道具体到底是什么意思,但是调用imagesc请求1变量,并检查图像句柄以查看colormap并将其传递给imwrite()
。
答案 2 :(得分:1)
我是一个非常新的程序员,如果这不是很有帮助,请提前道歉,但我遇到了同样的问题,并设法解决了问题。我使用uint8将其转换为:
imwrite(uint8(in_in), 'in_in.jpg', 'jpg');