Scikit Image - 写入图像
写入或保存图像在图像处理和计算机视觉任务中起着至关重要的作用。在执行图像处理操作(例如裁剪、调整大小、旋转或应用各种滤镜)时,需要保存图像。
写入图像是指将图像保存或存储为磁盘或内存中的外部文件的过程。在此过程中,我们通常指定所需的文件格式(例如 JPEG、PNG、TIFF 等)并提供文件名或路径。
在 scikit-image 库中,io 模块提供了一个名为 imsave() 的函数,专门用于将图像写入和存储为外部文件。此函数可用于保存图像处理操作的结果。
io.imsave() 方法
通过使用 imsave() 方法,可以将图像写入具有所需文件格式、文件名和所需位置的外部文件。以下是此方法的语法 −
skimage.io.imsave(fname, arr, plugin=None, check_contrast=True, **plugin_args)
该函数采用以下参数 −
- fname − 表示将保存图像的文件名或路径的字符串。文件的格式从文件名的扩展名中获取。
- arr −包含要保存的图像数据的形状为 (M,N) 或 (M,N,3) 或 (M,N,4) 的 NumPy 数组。
- plugin(可选) − 指定用于保存图像的插件的字符串。如果未提供 plugin 参数,该函数将自动尝试不同的插件,从 imageio 开始,直到找到合适的插件。但是,如果文件名 (fname) 具有 ".tiff" 扩展名,则默认使用 tifffile 插件。
- check_contrast(可选) − 一个布尔值,指示是否检查图像的对比度并打印警告。默认值为 True。
- **plugin_args(可选) −传递给指定插件的附加关键字参数。
示例 1
以下示例使用 imsave() 方法将随机数据数组写入外部图像文件 (.jpg)。
import numpy as np from skimage import io # 生成带有随机数的图像 image_data = np.random.randint(0, 256, size=(256, 256, 3), dtype=np.uint8) # 将随机图像保存为 JPG 文件 io.imsave('Output/Random_image.jpg', image_data) print("The image was saved successfully.")
输出
The image was saved successfully.
如果我们导航到保存图像的目录,我们将能够观察到保存的 "Random_image.jpg" 图像,如下所示 −

示例 2
以下示例使用 imsave() 方法将图像数组写入 TIFF 文件 (.tiff)。
import numpy as np from skimage import io # 读取图像 image_data = io.imread('Images/logo-w.png') print("输入图像属性:") print('类型:', type(image_data)) print('形状:', image_data.shape) # 保存图像作为 tiff 文件 io.imsave('Output/logo.tiff', image_data) print("图像已成功保存...")
输出
输入图像属性: 类型:< class 'numpy.ndarray' > 形状:(225,225,4) 图像保存成功...
下图表示保存图像的目录中保存的"logo.tiff"文件。

示例 3
以下示例演示如何使用 imsave() 方法将图像以低质量保存为 JPEG 文件 (.jpeg)。
import numpy as np from skimage import io # 读取图像 image = io.imread('Images/Flower1.jpg') # 将图像另存为 JPEG 文件 io.imsave('Output/flower.jpeg', image, plugin='pil', quality=10) # 显示图像数组属性 print("输入图像属性:") print('类型:', type(image)) print('形状:', image.shape) print("图像保存成功...")
输出
输入图像属性: 类型:< class 'numpy.ndarray'> 形状:(4000,6000,3) 图像已成功保存...
以下图像代表相应目录中输入(Flower1.jpg)和已保存(flower.jpeg)文件的详细信息。
输入文件

已保存文件
