【matlab】用matlab 保存帶標記圖像、圖片的方法總結


最近看了一些用matlab對圖形圖片進行保存的帖子和資源,關於圖像保存的方法給大家分享一下這些方法是大家所使用方法的一個總結.

如今常用的方法有三種printf,imwrite,saveas下面分別介紹一下:
imwrite
imwrite將圖像數據寫成圖像文件,一般用於圖像處理,當我們使用imshow將一副圖像使顯示在坐標系上時,我們可以使用如下方式保存圖像

   I=getimage(gcf); % 獲取坐標系中的圖像文件數據
   imwrite(I,'myphoto.jpg')%保存圖像為文件
同時可以使用下面的形式保存圖片數據,把圖片保存到指定文件夾,並對文件名進行編號
   f=getframe(gcf);
   imwrite(f.cdata,['C:\Users\shitao\Desktop\s4\',int2str(i),'.jpg']);
這個函數在視頻分幀時,我經常使用,相對saveas的保存速度,個人感覺效率比較高,下面舉個例子

 

clc;close all;clear all;
Img=imread('1.jpg');
if ndims(Img)==3
I=rgb2gray(Img);
else
I=Img;
end
I=im2bw(I,graythresh(I));
[m,n]=size(I);
imshow(I);title('binary image');
txt=get(gca,'Title');
set(txt,'fontsize',16);
L=bwlabel(I);
stats=regionprops(L,'all');
set(gcf,'color','w');
set(gca,'units','pixels','Visible','off');
q=get(gca,'position');
q(1)=0;%設置左邊距離值為零
q(2)=0;%設置右邊距離值為零
set(gca,'position',q);
for i=1:length(stats)
hold on;
rectangle('position',stats(i).BoundingBox,'edgecolor','y','linewidth',2);
temp = stats(i).Centroid;
plot(temp(1),temp(2),'r.');
drawnow;
end
frame=getframe(gcf,[0,0,n,m]);
im=frame2im(frame);
imwrite(im,'a.jpg','jpg');%可以修改保存的格式

 

  

 

 

saveas
Matlab提供直接的saveas函數可以將指定figure中的圖像或者simulink中的框圖進行保存,相當於【文件】中的【另存為】

 

1 % saveas(figure_handle,filename,fileformat)
2 plot(1:10);
3 saveas(gcf,‘myfig.jpg’)
4 復制代碼

它有三種書寫方式
saveas(gcf,['D:\保存的數據文件\方法1.png']) 
saveas(gcf,['D:\保存的數據文件\方法2','.png']) 
saveas(gcf,['D:\保存的數據文件\','方法3','.png'])

用saveas命令保存圖片。
Matlab提供直接的saveas函數可以將指定figure中的圖像或者simulink中的框圖進行保存,相當於【文件】中的【另存為】。  
saveas的三個參數:  
(1)圖形句柄,如果圖形窗口標題欄是“Figure 3”,則句柄就是3。 
(2)文件名。  
(3)單引號字符串,指定存儲格式。 
例: 
% saveas(figure_handle,filename,fileformat) plot(1:10); 
>>saveas(gcf,['D:\保存的數據文件\方法1.png'])
>> saveas(gcf,['D:\保存的數據文件\方法2','.png'])
>> saveas(gcf,['D:\保存的數據文件\','方法3','.png'])
把圖片保存到指定目錄並編號

saveas(gcf,['C:\Users\shitao\Desktop\s3\',int2str(i),'.jpg']);

 

 1  mov=aviread('C:\Users\shitao\Desktop\s5\2.avi');%讀入視頻
 2 Vframes=size(mov,2);%讀取視頻的幀數
 3 figure
 4  for i=1:Vframes
 5  % strtemp=strcat('C:\Users\shitao\Desktop\s2\',int2str(i),'.','jpg');%將每幀轉成.jpg的圖片
 6  I=mov(i).cdata;
 7  imshow(I);
 8 %此處添加圖像處理內容,如對圖像畫框,畫線等操作
 9  saveas(gcf,['C:\Users\shitao\Desktop\s2\',int2str(i),'.jpg']);
10 %imwrite(mov(i).cdata(:,:,:),strtemp); %把圖像寫入磁盤
11 end

 

 


saveas與imwrite的區別

saveas(handle,['目錄','文件名'])  
如果只有一幅圖,handle設為gcf
如果有多副,handle需單獨設置
imwrite(image_data,['directory','filename'])
需要與getframe連用
兩個命令都可以用來保存圖像,區別在於
1、背景色:saveas保存的圖像 背景色自動設置為白色,imwrite保存圖像為所見即所得
2、圖像大小: saveas無視你設置的圖像大小,按默認保存,imwrite保存所見即所得
 1 contrast example:在當前目錄下image文件夾下找到兩個圖像,對比一下
 2 clear
 3 clc
 4 x=0:pi/100:2*pi;
 5 y=sin(x);
 6 h=plot(x,y);  % h為plot線的句柄handle
 7 set(gcf,'position',[80,100,400,600])
 8 % 將圖像設置為距屏幕左下角 [80,像素
 9 % 圖像大小設置為400*600像素
10 set(gcf,'color',[1,1,1]) % 背景色設置為白色
11 mkdir image 
12 % 在當前文件夾下新建image文件夾,如果已存在會warning,不影響運行
13 % ========================
14 saveas(gcf,['image','test1.jpg'])
15 % ========================
16 f=getframe(gcf);
17 imwrite(f.cdata,['image','test2.jpg'])

 

 

復制代碼
printf
用法:print(圖形句柄,存儲格式,文件名);
  • 圖形句柄,如果圖形窗口標題欄是“Figure 3”,則句柄就是3.用gcf可以獲取當前窗口句柄。
  • 指定存儲格式。常用的有:
    • png格式:‚-dpng‘ (推薦這一種,與bmp格式一樣清晰,文件也不大)
    • jpeg: ‚-djpeg‘(文件小,較清晰)
    • tiff: ‚-dtiff‘
    • bmp: ‚-dbitmap‘(清晰,文件極大)
    • gif: ‚-dgif‘(文件小但不清晰)
例如
1 <font color="#000000" size="2">% print(figure_handle,fileformat,filename)
2 x=-pi:2*pi/300:pi;
3 y=sin(x);
4 plot(x,y);
5 %Matlab根據文件擴展名,自動保存為相應格式圖片,另外路徑可以是絕對也可以是相對
6 print(gcf,'-dpng','abc.png')   %保存為png格式的圖片到當前路徑</font>

 


注意:print函數必須緊跟在plot函數之后使用。











<ignore_js_op>
<ignore_js_op>
<ignore_js_op>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM