Matlab:图像数据保存

目录:

前言

在下载完一些数据集的做训练的时候,发现了很多不规范的命名,因此,查询了一下图片存储以及改名的方法,学习完后,写下了本篇blog,希望大家喜欢。

读取图像

    图像的读取    
    I=imread(‘pout.tif’);

imread是读取图像的函数。pout.tif是matlab内置的图像,不管在什么程序内都可以直接读取。那么,如果我们要读取其他位置的函数怎么做呢?这里我们来说几种常见的情形。

%注意
(1)读取1.jpg
I=imread(‘1.jpg’);
(2)读取2.jpg
I=imread(‘image\2.jpg’);%相对路径的读取
(3)读取D:\1023\25\1.jpg
I=imread(‘D:\1023\25\1.jpg’);%绝对路径的读取
(4)读取D:\1023\2520个图像。
for i=1:20
 I=imread([‘D:\1023\25\’,num2str(i),’.jpg’]);
end

注:第四种情况需要注意的是,里面添加了[ ],来保证这是一个整句。num2str(i)是将i由数字转换成字符形式。这样就能实现循环读取。一般来说,会将图像跟.m文件放在一起。当图像较多时,图像放入image文档中,读取方式将(2)和(4)结合起来。利用相对路径来读取,这样当程序和图像同时放在其他电脑上时,不会因为路径而产生问题。
那么什么时候用figure呢?当程序中只显示一幅图像时,直接imshow就可以。然后当图像多的时候,就需要用到figuure;imshow(I1);figure;imshow(I2);figure;imshow(I3)
如果想要在一张图片内,显示好几个图怎么办呢?title显示在图像的上方,起到提示的作用。

I=imread('pout.tif');
subplot(2,2,1);imshow(I);title('1');
subplot(2,2,2);imshow(I);title('2');
subplot(2,2,3);imshow(I);title('3');
subplot(2,2,4);imshow(I);title('4');

结果,如下:
图片

图像的存储

1、图像的存储
imwrite函数适合保存高质量的图像,保存结果很容易得到体现。
imwrite(I,’pout1.jpg’);
同样,imwrite也有相对路径和绝对路径的存储,以及连续的存储方法。同imread
imwrite(I,’pout1.jpg’);
imwrite(I,’image\pout1.jpg’);
imwrite(I,’D:\image\pout1.jpg’);

需要注明的是,存储所选择的文件夹,需要已经建立好。那么怎么去自动建立文件夹呢?

需要用mkdir函数。
mkdir(‘D:\image\1’)%绝对路径的建立。
mkdir(‘image\1’);%相对路径文件夹的建立。创建之后,在Matlab文件夹内。

读取都主要选择相对路径,以及循环读取。程序较为简单。

clc;clear;closeall;
I=imread('pout.tif');
figure;
subplot(221);imshow(I);title('1');
subplot(222);imshow(I);title('2');
subplot(223);imshow(I);title('3');
subplot(224);imshow(I);title('4');
whos;
mkdir('image')
imwrite(I,'image\pout.bmp');

2、直接另存为
在figure中使用菜单file——>saveas——>选择保存形式(fig,eps,jpeg,gif,png,bmp等),这个的缺点是另存为的图像清晰度有很大的牺牲
3、复制到剪贴板
在figure中使用菜单edit——>copy figure——>此时图像就复制到剪贴板了,我们可以借助其他软件(比如:画画,word程序)保存为需要的图片
4、saveas命令格式
Matlab提供直接的saveas函数可以将指定figure中的图像或者simulink中的框图进行保存,相当于【文件】中的【另存为】

% saveas(figure_handle,filename,fileformat)
plot(1:10);
saveas(gcf,‘myfig.jpg’)   
 (这种保存图像大小和源图像发生较大差别,因为没有对句柄进行特殊的设置。可以尝试
set (gcf,'Position',[500,500,500,500], 'color','w') )

5、print函数
print函数原本不是用来进行图像保存了,而是操作打印机的,但是这里我们可以借用下

% print(figure_handle,fileformat,filename)
x=-pi:2*pi/300:pi; 
y=sin(x);
plot(x,y);
%Matlab根据文件扩展名,自动保存为相应格式图片,另外路径可以是绝对也可以是相对
print(gcf,'-dpng','abc.png')   %保存为png格式的图片到当前路径

另外有网友向我反映,有时我们只有一个Matlab图像的fig文件,但没有该图像的相关坐标数据,那我们如何获取fig图像的数据呢,这个其实比较好办
1、将那个fig文件保存到Matlab的搜索路径下,双击打开它
2、在Matlab的command中输入如下内容
h=get(gcf,’chidren’)
data=get(h,{‘xdata’,’ydata’,’zdat a’})
%此时图形中所有图像的三维数据x,y,z将会以结构体的形式保存到data变量中了 ,
但这个方法有个限制,对于图像是不起作用的。

猜你喜欢

转载自blog.csdn.net/lvsehaiyang1993/article/details/80719315