matlab中如何保将显示出来的图像保存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中如何保将显示出来的图像保存相关的知识,希望对你有一定的参考价值。

在matlab中进行了5种边缘检测,多幅图像 ,想把这些检测的图像存在当前默认路径下的某个文件夹下,改用什么函数实现呢

1、直接另存为
在figure中使用菜单file——>saveas——>选择保存形式(fig,eps,jpeg,gif,png,bmp等),这个的缺点是另存为的图像清晰度有很大的牺牲
2、复制到剪贴板
在figure中使用菜单edit——>copy figure——>此时图像就复制到剪贴板了,我们可以借助其他软件(比如:绘图板)保存为需要的图片
3、saveas命令格式
Matlab提供直接的saveas函数可以将指定figure中的图像或者simulink中的框图进行保存,相当于【文件】中的【另存为】
% saveas(figure_handle,filename,fileformat)
plot(1:10);
saveas(gcf,‘myfig.jpg’)
参考技术A plot(x) % 画图语句
F = getframe(gcf); %抓取图片
imwrite(F.cdata,'myfile.jpg'); %保存图片

路径应该可以在' '中修改,试试吧追问

if iscell(namefile)
cor_exactname=strcat(pathname,'cor_exact\',namefilei(1:end),'_cor_exact.txt');
else
cor_exactname=strcat(pathname,'cor_exact\',namefile(1:end),'_cor_exact.txt');
end

save cor_exactname.txt cor_exact -ascii
我想将cor_exactname.txt 保存到cor_exact文件夹中 但是名字为什么不按自己的要求命名,总显示cor_exactname.txt

追答

不好意思,刚午休了;

temp = 1231345; % 你想要存的变量内容
cor_exactname = 'dsds'; % 你的文件名,字符串类型的
path = sprintf('%s%s.txt','D:\cor_exact\',cor_exactname);
% 上面这句和C有点类似,%s表示用后面的字符串替换的意思 %d的话表示整型
save (path,'temp','-ascii');
% temp就是变量名,要加' '的,path就是上面的路径,注意D盘的cor_exact文件夹要事先创建好,需要matlab自己创建,就用mkdir('D:/','cor_exact');命令吧

追问

非常感谢呀 自己试了好半天都没改对
我的错误是不是这样:
1.在使用save命令时 系统把路径名认为是一个已经存在的文件夹 即使你把文件名设计成一个变化的名字 这个文件的名字也不会变化

2.像这种变化文件命名时要使用%s这种格式 类似于c语言的格式
3,使用save命令式,temp 要加‘ ’的

追答

我觉得我写的够简单了,会编程的基本都能改成自己想用的;
但是,我写这么多,居然还没别人一句“截图行不?”让你满意,很让我失望

追问

实在太不好意思了 我记得是把你的答案设置为满意答案的呀 不知道怎么变成了那个 很抱歉

追答

if iscell(namefile)
cor_exactname=strcat(pathname,'cor_exact\',namefilei(1:end),'_cor_exact.txt');
else
cor_exactname=strcat(pathname,'cor_exact\',namefile(1:end),'_cor_exact.txt');
end
path = sprintf('%s%s.txt','D:\cor_exact\',cor_exactname);
save (path,'cor_exact ','-ascii');

参考技术B 截图行不?。。。。追问

向自动保存呀 要处理的图片量很大

本回答被提问者采纳

如何使用 saveas() 将 MATLAB 图形保存为 JPEG 而图像不严重?

【中文标题】如何使用 saveas() 将 MATLAB 图形保存为 JPEG 而图像不严重?【英文标题】:How to save MATLAB figure as JPEG using saveas() without the image coming off badly? 【发布时间】:2013-04-05 18:20:21 【问题描述】:

在我正在编写的 MATLAB 函数中,我正在生成一个图形。执行该功能时会显示该图形。我需要将图形保存为 JPEG 图像。为此,我可以在显示图形的图形窗口中执行文件->另存为。但我想自动化这个。我尝试使用 saveas() 函数来做到这一点。问题是生成的图像是不可取的。以下是演示问题的图像,向您展示我的意思:

在 MATLAB 图形窗口中使用 File->Save As 手动保存的 JPEG 图像:

使用 saveas() 函数保存的 JPEG 图像(请注意,绘图效果不佳且标题重叠):

这是我生成图形并使用 saveas() 将图形保存为 JPEG 的 MATLAB 函数:

function JpgSaveIssueDemo( )
    figure( 1 );
    t = 0:0.1:8;    

    subplot( 2, 2, 1 );    
    plot( t, sin(t) );
    title( 'Plot 1 of Example to Demonstrate JPG Save Issue', 'FontSize', 18 );

    subplot( 2, 2, 2 );
    plot( t, sin(t) );
    title( 'Plot 2 of Example to Demonstrate JPG Save Issue', 'FontSize', 18 );

    subplot( 2, 2, 3 );
    plot( t, sin(t) );
    title( 'Plot 3 of Example to Demonstrate JPG Save Issue', 'FontSize', 18 );

    subplot( 2, 2, 4 );
    plot( t, sin(t) );
    title( 'Plot 4 of Example to Demonstrate JPG Save Issue', 'FontSize', 18 );

    saveas( gcf, 'DemoPlot', 'jpg' );
end

执行 JpgSaveIssueDemo() 时显示的图形未最大化。所以,我想如果我可以在 JpgSaveIssueDemo() before saveas() 执行之前使用函数调用/s 最大化它,那么保存的JPEG图像会很好。

所以,我在 JpgSaveIssueDemo() 中的 saveas() 行之前使用了这段代码来最大化图形:

drawnow;
jFrame = get(handle(gcf),'JavaFrame'); 
jFrame.setMaximized(true);

然后,显示的图形被最大化。但是,结果是一样的:JPEG 图像仍然无法正常显示。

为此可以做些什么?

【问题讨论】:

部分解决方案:Jpg 是错误的图像类型。图像中线条附近的垃圾方块是 jpg 压缩伪影。 jpg 用于照片之类的东西,png 用于图形之类的东西。 png 格式将为您提供更好的质量和更小的文件大小。 【参考方案1】:

Matlab 图形导出对话框和saveas() 函数缺少很多理想的功能。特别是,savas() 无法创建自定义结果图像,这就是您的结果看起来很差的原因。对于位图图像的创建,我强烈推荐使用第三方函数export_fig。通过将以下代码添加到您的函数中(包括最大化技巧)

set(gcf, 'Color', 'white'); % white bckgr
export_fig( gcf, ...      % figure handle
    'Export_fig_demo',... % name of output file without extension
    '-painters', ...      % renderer
    '-jpg', ...           % file format
    '-r72' );             % resolution in dpi

我创建了这张图片:(在浏览器中使用“显示图片”或类似内容来获取原始大小)

要获得更高质量,请使用 150 甚至 300 dpi 的更高分辨率(用于打印)。而不是最大化图形窗口,对于大多数应用程序来说,它适合定义轴大小以获得所需大小的图像:

unitSave = get(figureHandle, 'Unit');                % store original unit
set(figureHandle, 'Unit', 'centimeters');            % set unit to cm
set(figureHandle,'position',[0 0 width height]);     % set size
set(figureHandle, 'Unit', unitSave);                 % restore original unit

【讨论】:

感谢伟大的链接! 一个很好的答案,似乎也解决了我的问题:***.com/q/22764867/376454【参考方案2】:

只需使用像 EPS 这样的无损可扩展格式,请参阅下面 sn-p 中的最后一行 :)

h1=figure % create figure
plot(t,Data,'r');
legend('Myfunction');

% Create title with required font size
title('Variance vs distance','LineWidth',4,'FontSize',18,...
'FontName','Droid Sans');

% Create xlabel with required font size
xlabel('Distance (cm)','FontSize',14,...
'FontName','DejaVu Sans');

% Create ylabel with required font size
ylabel('Variance of sobel gradients','FontSize',14,...
'FontName','DejaVu Sans');

print(h1,'-depsc','autofocus.eps') % print figure to a file

虽然我无法在此处附加 EPS 文件,但不受支持,但它可扩展,可以放入文字处理器或 Latex 中,而不必担心分辨率不佳。

【讨论】:

【参考方案3】:

我遇到了同样的问题,这是我用来解决的:

set(gcf,'PaperPositionMode','auto') saveas(gcf,'file_to_save','png')

其中gcf 可以替换为所需图形的句柄。

【讨论】:

以上是关于matlab中如何保将显示出来的图像保存的主要内容,如果未能解决你的问题,请参考以下文章

Matlab中如何只把figure中的图像区域保存为图片文件

matlab如何让调整保存图像的大小

如何截取matlab绘制的图像

如何使用 saveas() 将 MATLAB 图形保存为 JPEG 而图像不严重?

小技巧将matlab的plot出来的图像自动保存为图片

请问,matlab中,如何将一幅从原图截取出来的一部分,还保存为原图的格式呢?