我正在使用 imagesc 来获取完整的图像。但是,我只能设法显示它,然后我必须手动保存它,我找不到使用 imwrite 或 imsave 从脚本中保存图像的方法。有可能吗?
编码:
image='C:\image.jpg';
in1= imread((image));
in=rgb2gray(in1);
in_in= cumsum(cumsum(double(in)), 2);
figure, imagesc(in_in);
您也可以使用打印命令。例如,如果您正在运行多个图像并想要序列化它们并保存它们,您可以执行以下操作:
% 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 等等。
希望这可以帮助
我相信您的问题可能在于您正在保存一个不在 [0 1] 范围内的双矩阵。如果您阅读文档,您会看到
如果输入数组是 double 类,并且图像是灰度或 RGB 彩色图像,则 imwrite 假定动态范围为 [0,1] 并在将数据作为 8 位值写入文件之前自动将数据缩放 255。
您可以自己将其转换为受支持的类型(即逻辑、uint8、uint16 或双精度),或者通过例如将其除以最大值将其置于 [0 1] 范围内:
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 个变量,并检查图像句柄以查看颜色图并将其传递给imwrite()
.
我是一个非常新的程序员,所以如果这不是很有帮助,请提前道歉,但我只是遇到了同样的问题并设法解决了。我使用 uint8 像这样转换它:
imwrite(uint8(in_in), 'in_in.jpg', 'jpg');