Scikit-image 简明教程

Scikit Image - Writing Images

编写或保存图像在图像处理和计算机视觉任务中起着至关重要的作用。在执行图像处理操作(例如裁剪、缩放、旋转或应用各种滤镜)时,保存图像很有必要。

编写图像指的是将图像保存或存储为磁盘上或内存中的外部文件的过程。在此过程中,我们通常会指定所需的图像格式(例如 JPEG、PNG、TIFF 等)并提供文件名或路径。

在 scikit-image 库中,io 模块提供了一个名为 imsave() 的函数,专门用于将图像作为外部文件写入并存储。该函数对于保存图像处理操作的结果很有用。

The io.imsave() method

通过使用 imsave() 方法,可以将图像写入外部文件,并指定所需的文件格式、文件名和所需位置。以下是该方法的语法 -

skimage.io.imsave(fname, arr, plugin=None, check_contrast=True, **plugin_args)

这个函数采用以下参数 −

  1. fname − 一个表示文件名或图像将被保存的路径的字符串。文件的格式是从该文件名扩展名中取得的。

  2. arr − NumPy 数组,形状为 (M,N) 或 (M,N,3) 或 (M,N,4),包含有待保存的图像数据。

  3. plugin (optional) − 指定用于保存图像的插件的字符串。如果未提供插件参数,函数将自动尝试不同的插件,从 imageio 开始,直至找到合适的插件为止。但是,如果文件名 (fname) 有 ".tiff" 扩展名,则将默认使用 tifffile 插件。

  4. check_contrast (optional) − 一个布尔值,表示是否检查图像的对比度并打印警告。默认值为 True。

  5. **plugin_args (optional) − 传递给指定插件的其他关键字参数。

Example 1

以下示例将一个随机数据的数组写到一个外部图像文件 (.jpg),使用 imsave() 方法。

import numpy as np
from skimage import io
# Generate an image with random numbers
image_data = np.random.randint(0, 256, size=(256, 256, 3), dtype=np.uint8)
# Save the random image as a JPG file
io.imsave('Output/Random_image.jpg', image_data)
print("The image was saved successfully.")
The image was saved successfully.

如果我们导航到该图像保存到的目录,我们就能观察到已保存的 "Random_image.jpg" 图像,如下所示 −

writing images 1

Example 2

以下示例将一个图像数组写到一个 TIFF 文件 (.tiff),使用 imsave() 方法。

import numpy as np
from skimage import io
# Read an image
image_data = io.imread('Images/logo-w.png')
print("The input image properties:")
print('Type:', type(image_data))
print('Shape:', image_data.shape)
# Save the image as a tiff file
io.imsave('Output/logo.tiff', image_data)
print("The image was saved successfully...")
The input image properties:
Type: < class 'numpy.ndarray' >
Shape: (225, 225, 4)
The image was saved successfully...

以下图像表示了已保存的 "logo.tiff" 文件,在其保存到的目录中。

writing images 2

Example 3

以下示例演示如何使用 imsave() 方法将一个图像保存到一个 JPEG 文件 (.jpeg),且为低质量。

import numpy as np
from skimage import io
# Read an image
image = io.imread('Images/Flower1.jpg')
# Save the image as a JPEG file
io.imsave('Output/flower.jpeg', image, plugin='pil', quality=10)
# Display the image array properties
print("The input image properties:")
print('Type:', type(image))
print('Shape:', image.shape)
print("The image was saved successfully...")
The input image properties:
Type: < class 'numpy.ndarray'>
Shape: (4000, 6000, 3)
The image was saved successfully...

以下图像代表了在各自目录中的输入文件 (Flower1.jpg) 和已保存文件 (flower.jpeg) 的详细信息。

writing images 3
writing images 4