2

我对 Matlab 很陌生,虽然我知道一些其他的编程语言,所以如果这很简单,请原谅我。我无法在 StackOverflow 或其他地方找到任何答案。

我使用以下代码生成一个图形:

 figure(6),imageplot(P); drawnow;

看起来像这样:在此处输入图像描述

然后我使用以下命令将此图像保存到我的计算机:

imwrite(P, 'images/plot.png');

生成的图像很小,并且缺少一些颜色信息:

在此处输入图像描述

但是,如果我使用打开图(图像#1)中的保存功能并手动保存它,我会得到我想要的,即存储在我计算机上的精确图像。

在此处输入图像描述

我将如何编程?我认为 imwrite() 只会直接写入图像,但显然我做错了什么。有什么建议吗?也许它与 imageplot 命令有关?我似乎无法让它在 imwrite 中工作。

更新:根据下面的评论,我已经开始使用带有“最近”选项的“imresize”。这会正确缩放图像,但结果图像仍然比我点击图中的“保存”按钮更暗(因此信息更少)。

从图中保存的图像:

在此处输入图像描述

使用“imresize”和“最近”选项的图像:

在此处输入图像描述

4

2 回答 2

3

MATLABimwrite命令准确保存图像矩阵中指定的像素数。这是您计算的实际结果;输出是“小”的原因是因为它应该是。要使其更大,只需根据需要对其进行缩放/缩放。

然而,保存图形选项做了一些完全不同的事情:它将您在图形窗口中获得的输出栅格化,并为您提供将其保存为图像的选项。这一点很明显,当您这样做时,除了您的结果之外,您还获得了一个白色背景,这实际上只是您在保存之前看到的灰色背景;这可以通过在使用保存选项之前调整图形窗口的大小来进行调整。

如果您只想使输出数字更大,我建议您使用imresize命令中的内容。

说,如果您希望默认大小是实际结果大小的两倍,只需使用:

imresize(P, 2.0);

如需更多选项,请尝试help imresize.

于 2013-06-20T10:35:17.793 回答
2

图形的“另存为...”功能所需的命令称为“打印”。我经常用

print(gcf, '-dpng', 'some_filename.png')

或者

print(gcf, '-depsc', 'some_filename.eps','-r0')

保存屏幕上显示的图形。png 格式提供较小的文件大小和出色的质量,大多数图像查看器和浏览器都可以理解。eps 格式是一种矢量格式,我用于 printig。'-r0' 选项为矢量格式属性指定“使用与屏幕分辨率相同的大小”。

于 2013-06-20T11:09:34.167 回答