MATLAB imwrite()函数:保存图片(附带实例)
在 MATLAB 中,imwrite() 函数用来写入各种图像文件,它的调用格式及说明如下表所示。
利用 imwrite() 函数保存图像时,需要注意以下几点:
【实例】读取图片并转换图片格式。MATLAB 程序如下:

图 1 显示图片
【实例 2】显示二进制图像。MATLAB 程序如下:

图 2 显示图片
【实例 3】创建不同格式图像。MATLAB 程序如下:

图 3 显示图片
调用格式 | 说明 |
---|---|
imwrite(A, filename) | 将图像的数据 A 写入文件 filename 中,并从扩展名推断出文件格式 |
imwrite(A, map, filename) | 将图像矩阵 A 中的索引图像以及颜色映像矩阵写入文件 filename 中 |
imwrite(…, Name, Value) | 使用一个或多个名称-值对组参数,以指定 GIF、HDF、JPEG、PBM、PGM、PNG、PPM 和 TIFF 文件输出的其他参数 |
imwrite(…, fmt) | 以 fmt 指定的格式写入图像,无论 filename 中的文件扩展名如何 |
利用 imwrite() 函数保存图像时,需要注意以下几点:
- 如果 A 的数据类型为 uint8,MATLAB 默认输出 unit8 的数据类型;
- 如果 A 属于数据类型 uint16 且输出文件格式支持 16 位数据(JPEG、PNG 和 TIFF),则 imwrite() 将输出 16 位的值。如果输出文件格式不支持 16 位数据,则 imwrite() 返回错误;
- 如果 A 是灰度图像或者属于数据类型 double 或 single 的 RGB 彩色图像,则 imwrite() 假设动态范围是 [0,1],并在将其作为 8 位值写入文件之前自动按 255 缩放数据。如果 A 中的数据是 single,则在将其写入 GIF 或 TIFF 文件之前将 A 中的数据转换为 double;
- 如果 A 属于 logical 数据类型,则 imwrite() 会假定数据为二值图像并将数据写入位深度为 1 的文件(如果格式允许)。BMP、PNG 或 TIFF 格式以输入数组形式接受二值图像。
【实例】读取图片并转换图片格式。MATLAB 程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> A=imread('dish.jpg'); % 读取当前文件夹目录下的一个24位PNG图像 >> imshow(A) % 显示图像 >> imwrite(A,'dish_b.bmp','bmp'); % 将图像dish.jpg以名称dish_b保存到当前文件夹目录下,格式为.bmp如下图所示,是运行上述程序显示的图片。

图 1 显示图片
【实例 2】显示二进制图像。MATLAB 程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> [X,map] =imread('animals.gif',1); % 读取图像文件animals.gif的第1帧 >> subplot(1,3,1),imshow(X,map),title('第1帧索引图像') % 显示第1帧带有颜色图的索引图像 >> [X,map]=imread('animals.gif',2); % 读取图像文件animals.gif的第2帧 >> subplot(1,3,2),imshow(X,map),title('第2帧索引图像') % 显示第2帧带有颜色图的索引图像 >> A=imread('animals.gif',3); % 读取图像文件animals.gif的第3帧 >> subplot(1,3,3),imshow(A),title('第3帧灰度图像') % 显示第3帧的灰度图像 >> imwrite(A,'animals.bmp','bmp'); % 将图像转换为BMP图像格式保存到当前目录下如下图所示,是运行上述程序显示的图片。

图 2 显示图片
【实例 3】创建不同格式图像。MATLAB 程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> [X,map] =imread('canoe.tif'); % 读取tif图像文件 >> subplot(2,2,1),imshow(X,map),title('原图') % 显示tif图像 >> A=imread('canoe.tif','PixelRegion',{[1 2],[3 4]}); % 读取tif图像数据的第 1 和第 2 行以及第 3 和第 4 列界定的区域 >> subplot(2,2,2),imshow(A),title('显示部分区域') % 显示图像部分区域 % 将tif图像转换为jpg图像格式,设置压缩文件的质量为5,质量较低,压缩率较高 >> imwrite(X,map,'canoe.jpg', 'Quality',5); >> B=imread('canoe.jpg'); % 读取jpg图像 >> subplot(2,2,3),imshow(B),title('转换格式后的图像') % 显示jpg图像 >> imwrite(X,map,'canoe.gif','BackgroundColor',5); % 将图像转换为gif图像格式,降低图像分辨率 >> C=imread('canoe.gif'); % 读取图像数据 >> subplot(2,2,4),imshow(C),title('降低分辨率') % 显示图像运行结果如下图所示:

图 3 显示图片