Scikit Image - 读取图像

读取图像是使用图像处理工具执行裁剪、调整大小、旋转或应用滤镜等操作时的基本步骤。读取图像的过程包括从图像文件中捕获像素值和元数据,并将其表示为合适的数据结构,例如 NumPy 数组或矩阵。

在 Scikit-image 库中,io 模块提供了一个函数 imread(),用于将图像文件作为 NumPy 数组加载到内存中。将图像作为 NumPy 数组加载到内存后,我们就可以访问 Scikit-image 中可用的各种图像处理函数,以执行过滤、分割、特征提取等任务。

imread() 方法

Scikit-image 中的 io.imread() 方法能够读取各种格式的图像,包括 JPEG、PNG、TIFF、BMP 等。该函数内部根据特定的图像格式使用不同的库,例如 imageio、PIL 或 tifffile。

语法

以下是此方法的语法和参数 −

skimage.io.imread(fname, as_gray=False, plugin=None, **plugin_args)
  • Fname − 表示文件名或路径或图像 URL 的字符串。
  • as_gray(可选) − 如果设置为 True,它会将彩色图像转换为以 64 位浮点数表示的灰度图像。已经是灰度格式的图像不会被转换。
  • plugin(可选) −指定用于读取图像的插件的字符串。如果未提供 plugin 参数,该函数将自动尝试不同的插件,从 imageio 开始,直到找到合适的插件。但是,如果文件名 (fname) 具有".tiff"扩展名,则默认使用 tifffile 插件。
  • **plugin_args(可选) − 传递给指定插件的附加关键字参数。

返回值

该方法返回表示图像的 NumPy 数组。该数组包含像素值,其形状与图像的尺寸相对应。图像的色带或通道存储在数组的第三维中。

例如,灰度图像的尺寸为 MxN,RGB 图像的尺寸为 MxNx3,RGBA 图像的尺寸为 MxNx4

示例 1

以下示例演示如何使用文件名加载图像。

import skimage
from skimage import io

# 读取图像
image = io.imread('Images/logo.png')

# 从图像数组显示图像属性
print('以下是加载的图像的属性:')
print("图像形状:", image.shape)
print("图像数据类型:", image.dtype)
print("颜色通道数:", image.shape[2])

输入图像

Logos

输出

以下是加载的图像的属性:
图像形状:(225, 225, 4)
图像数据类型:uint8
颜色通道数:4

示例 2

以下示例演示如何使用图像 URL 加载图像。

import skimage
from skimage import io

# 读取图像
image = io.imread('https://www.tutorialspoint.com/images/logo.png')

# 从图像数组中显示图像属性
print('以下是加载图像的属性:')
print("图像形状:", image.shape)
print("图像数据类型:", image.dtype)
print("颜色通道数:", image.shape[2])

输入图像

Logos

输出

以下是加载图像的属性:
图像形状:(140, 568, 3)
图像数据类型:uint8
颜色通道数:3

示例 3

以下示例演示了如何使用 imread() 方法的 as_gray 参数将彩色图像转换为灰度图像。

import skimage
from skimage import io

# 读取图像
image = io.imread('https://www.tutorialspoint.com/images/logo.png', as_gray=True)

# 从图像数组中显示图像属性
print('以下是加载图像的属性:')
print("图像形状:", image.shape)
print("图像数据类型:", image.dtype)

输出

以下是加载图像的属性:
图像形状:(140, 568)
图像数据类型:float64