skimage.io#

用于以各种格式读写图像的实用程序。

以下插件可用

插件

描述

simpleitk

通过 SimpleITK 进行图像读取和写入

gdal

通过 GDAL 库(www.gdal.org)进行图像读取

matplotlib

使用 Matplotlib 显示或保存图像

fits

通过 PyFITS 进行 FITS 图像读取

tifffile

使用 tifffile.py 加载和保存 TIFF 和基于 TIFF 的图像

imread

通过 imread 进行图像读取和写入

pil

通过 Python Imaging Library 进行图像读取

imageio

通过 ImageIO 库进行图像读取

skimage.io.call_plugin

查找适合的 ‘kind’ 插件并执行它。

skimage.io.concatenate_images

将图像集合中的所有图像连接成一个数组。

skimage.io.find_available_plugins

列出可用的插件。

skimage.io.imread

从文件加载图像。

skimage.io.imread_collection

加载一组图像。

skimage.io.imread_collection_wrapper

skimage.io.imsave

将图像保存到文件。

skimage.io.imshow

显示图像。

skimage.io.imshow_collection

显示一组图像。

skimage.io.load_sift

从外部生成的 文件读取 SIFT 或 SURF 特征。

skimage.io.load_surf

从外部生成的 文件读取 SIFT 或 SURF 特征。

skimage.io.plugin_info

返回插件元数据。

skimage.io.plugin_order

返回当前首选的插件顺序。

skimage.io.pop

从共享图像栈中弹出图像。

skimage.io.push

将图像推送到共享图像栈。

skimage.io.reset_plugins

skimage.io.show

显示待处理的图像。

skimage.io.use_plugin

设置指定操作的默认插件。

skimage.io.ImageCollection

加载和管理一组图像文件。

skimage.io.MultiImage

一个包含多帧 TIFF 图像所有帧的类。

skimage.io.collection

用于保存图像集合的数据结构,可以选择缓存。

skimage.io.manage_plugins

处理图像读取、写入和绘图插件。

skimage.io.sift

skimage.io.util


skimage.io.call_plugin(kind, *args, **kwargs)[source]#

查找适合的 ‘kind’ 插件并执行它。

参数:
kind{‘imshow’, ‘imsave’, ‘imread’, ‘imread_collection’}

要查找的函数。

pluginstr, 可选

要加载的插件。默认值为 None,在这种情况下,将使用第一个匹配的插件。

*args, **kwargs参数和关键字参数

传递给插件函数。


skimage.io.concatenate_images(ic)[source]#

将图像集合中的所有图像连接成一个数组。

参数:
ic一组图像

要连接的图像。

返回:
array_catndarray

一个比 ic 中图像多一个维度的数组。

引发:
ValueError

如果 ic 中的图像形状不相同。

备注

concatenate_images 接收包含图像的任何可迭代对象,包括 ImageCollection 和 MultiImage,并返回一个 NumPy 数组。


skimage.io.find_available_plugins(loaded=False)[source]#

列出可用的插件。

参数:
loadedbool

如果为 True,则仅显示当前加载的插件。默认情况下,将显示所有插件。

返回:
pdict

一个字典,其中插件名称作为键,公开的函数作为值。


skimage.io.imread(fname, as_gray=False, plugin=None, **plugin_args)[source]#

从文件加载图像。

参数:
fnamestr 或 pathlib.Path

图像文件名,例如 test.jpg 或 URL。

as_graybool, 可选

如果为 True,则将彩色图像转换为灰度(64 位浮点数)。已经是灰度格式的图像不会被转换。

pluginstr, 可选

要使用的插件名称。默认情况下,会尝试不同的插件(从 imageio 开始),直到找到合适的候选者。如果未给出并且 fname 是一个 tiff 文件,则将使用 tifffile 插件。

返回:
img_arrayndarray

不同的颜色带/通道存储在第三维中,因此灰度图像为 MxN,RGB 图像为 MxNx3,RGBA 图像为 MxNx4。

其他参数:
plugin_args关键字

传递给给定插件。


skimage.io.imread_collection(load_pattern, conserve_memory=True, plugin=None, **plugin_args)[source]#

加载一组图像。

参数:
load_patternstr 或 list

要加载的对象列表。这些通常是文件名,但可能因当前激活的插件而异。有关此参数的默认行为,请参阅 ImageCollection

conserve_memorybool, 可选

如果为 True,则一次只保留一个图像在内存中。否则,将加载图像后缓存图像。

返回:
icImageCollection

一组图像。

其他参数:
plugin_args关键字

传递给给定插件。


skimage.io.imread_collection_wrapper(imread)[source]#

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

将图像保存到文件。

参数:
fnamestr 或 pathlib.Path

目标文件名。

arr形状为 (M,N) 或 (M,N,3) 或 (M,N,4) 的 ndarray

图像数据。

pluginstr, 可选

要使用的插件名称。默认情况下,会尝试不同的插件(从 imageio 开始),直到找到合适的候选者。如果未给出并且 fname 是一个 tiff 文件,则将使用 tifffile 插件。

check_contrastbool, 可选

检查低对比度并打印警告(默认值:True)。

其他参数:
plugin_args关键字

传递给给定插件。

备注

保存 JPEG 时,可以使用 quality 关键字参数控制压缩比,该参数是一个整数,其值在 [1, 100] 之间,其中 1 代表最差的质量和最小的文件大小,而 100 代表最好的质量和最大的文件大小(默认值 75)。这仅在使用 PIL 和 imageio 插件时可用。


skimage.io.imshow(arr, plugin=None, **plugin_args)[source]#

显示图像。

参数:
arrndarray 或 str

图像数据或图像文件名。

pluginstr

要使用的插件名称。默认情况下,会尝试使用不同的插件(从 imageio 开始),直到找到合适的候选插件。

其他参数:
plugin_args关键字

传递给给定插件。

区域邻接图 (RAG) 合并

区域邻接图 (RAG) 合并

skimage.io.imshow_collection(ic, plugin=None, **plugin_args)[source]#

显示一组图像。

参数:
icImageCollection

要显示的集合。

pluginstr

要使用的插件名称。默认情况下,会尝试使用不同的插件,直到找到合适的候选插件。

其他参数:
plugin_args关键字

传递给给定插件。


skimage.io.load_sift(f)[source]#

从外部生成的 文件读取 SIFT 或 SURF 特征。

此例程读取由 http://people.cs.ubc.ca/~lowe/keypoints/http://www.vision.ee.ethz.ch/~surf/ 中的二进制实用程序生成的 SIFT 或 SURF 文件。

此例程不会从图像生成 SIFT/SURF 特征。这些算法受专利保护。请改用 skimage.feature.CENSURE

参数:
filelike字符串或打开的文件

http://people.cs.ubc.ca/~lowe/keypoints/http://www.vision.ee.ethz.ch/~surf/ 中的特征检测器生成的输入文件。

mode{‘SIFT’, ‘SURF’}, 可选

用于生成filelike的描述符类型。

返回:
data具有以下字段的记录数组
  • row: int

    特征的行位置

  • column: int

    特征的列位置

  • scale: float

    特征比例

  • orientation: float

    特征方向

  • data: array

    特征值


skimage.io.load_surf(f)[source]#

从外部生成的 文件读取 SIFT 或 SURF 特征。

此例程读取由 http://people.cs.ubc.ca/~lowe/keypoints/http://www.vision.ee.ethz.ch/~surf/ 中的二进制实用程序生成的 SIFT 或 SURF 文件。

此例程不会从图像生成 SIFT/SURF 特征。这些算法受专利保护。请改用 skimage.feature.CENSURE

参数:
filelike字符串或打开的文件

http://people.cs.ubc.ca/~lowe/keypoints/http://www.vision.ee.ethz.ch/~surf/ 中的特征检测器生成的输入文件。

mode{‘SIFT’, ‘SURF’}, 可选

用于生成filelike的描述符类型。

返回:
data具有以下字段的记录数组
  • row: int

    特征的行位置

  • column: int

    特征的列位置

  • scale: float

    特征比例

  • orientation: float

    特征方向

  • data: array

    特征值


skimage.io.plugin_info(plugin)[source]#

返回插件元数据。

参数:
pluginstr

插件名称。

返回:
mdict

插件 .ini 中指定的元数据。


skimage.io.plugin_order()[source]#

返回当前首选的插件顺序。

返回:
pdict

首选插件顺序的字典,键为函数名称,值为插件(按优先级顺序排列)。


skimage.io.pop()[source]#

从共享图像栈中弹出图像。

返回:
imgndarray

从堆栈中弹出的图像。


skimage.io.push(img)[source]#

将图像推送到共享图像栈。

参数:
imgndarray

要推送的图像。


skimage.io.reset_plugins()[source]#

skimage.io.show()[source]#

显示待处理的图像。

启动当前 GUI 插件的事件循环,并显示所有待处理的图像,这些图像通过 imshow 排队。这在从非交互式脚本使用 imshow 时是必需的。

show 的调用将阻塞代码执行,直到所有窗口都关闭。

示例

>>> import skimage.io as io
>>> rng = np.random.default_rng()
>>> for i in range(4):
...     ax_im = io.imshow(rng.random((50, 50)))
>>> io.show() 

基于区域边界的区域邻接图 (RAG)

基于区域边界的区域邻接图 (RAG)

区域邻接图 (RAG) 合并

区域邻接图 (RAG) 合并

skimage.io.use_plugin(name, kind=None)[source]#

为指定的运算设置默认插件。如果插件尚未加载,则会加载它。

参数:
namestr

插件名称。有关可用插件的列表,请参阅 skimage.io.available_plugins

kind{‘imsave’, ‘imread’, ‘imshow’, ‘imread_collection’, ‘imshow_collection’}, 可选

为此函数设置插件。默认情况下,插件设置为所有函数。

示例

要使用 Matplotlib 作为默认图像读取器,请编写以下代码

>>> from skimage import io
>>> io.use_plugin('matplotlib', 'imread')

要查看可用插件的列表,请运行 skimage.io.available_plugins。请注意,这列出了已定义的插件,但如果您的系统没有安装所需的库,则可能无法使用完整的列表。

class skimage.io.ImageCollection(load_pattern, conserve_memory=True, load_func=None, **load_func_kwargs)[source]#

Bases: object

加载和管理一组图像文件。

参数:
load_patternstr 或 str 列表

要加载的模式字符串或字符串列表。文件名路径可以是绝对路径或相对路径。

conserve_memorybool, 可选

如果为 True,则 skimage.io.ImageCollection 不会在特定时间内保留超过一个图像。否则,图像将在加载后被缓存。

其他参数:
load_func可调用对象

默认情况下为 imread。请参阅下面的“备注”。

**load_func_kwargsdict

任何其他关键字参数都将传递给load_func

备注

请注意,文件始终以字母数字顺序返回。另请注意,切片返回一个新的 skimage.io.ImageCollection而不是数据视图。

可以通过load_func自定义 ImageCollection 图像加载。对于 ImageCollection icic[5] 调用 load_func(load_pattern[5]) 来加载该图像。

例如,以下是一个 ImageCollection,它会为提供的每个视频加载每秒帧

import imageio.v3 as iio3
import itertools

def vidread_step(f, step):
    vid = iio3.imiter(f)
    return list(itertools.islice(vid, None, None, step)

video_file = 'no_time_for_that_tiny.gif'
ic = ImageCollection(video_file, load_func=vidread_step, step=2)

ic  # is an ImageCollection object of length 1 because 1 video is provided

x = ic[0]
x[5]  # the 10th frame of the first video

或者,如果提供了load_func,并且load_pattern是一个序列,则会创建一个与之对应长度的 skimage.io.ImageCollection,并且会通过使用load_pattern的匹配元素作为其第一个参数来调用load_func,来加载各个图像。在这种情况下,序列的元素不需要是现有文件(或字符串)的名称。例如,要创建一个包含视频中 500 个图像的 skimage.io.ImageCollection

class FrameReader:
    def __init__ (self, f):
        self.f = f
    def __call__ (self, index):
        return iio3.imread(self.f, index=index)

ic = ImageCollection(range(500), load_func=FrameReader('movie.mp4'))

ic  # is an ImageCollection object of length 500

load_func 的另一个用法是将所有图像转换为 uint8

def imread_convert(f):
    return imread(f).astype(np.uint8)

ic = ImageCollection('/tmp/*.png', load_func=imread_convert)

示例

>>> import imageio.v3 as iio3
>>> import skimage.io as io

# 您的图像所在的位置 >>> data_dir = os.path.join(os.path.dirname(__file__), ‘../data’)

>>> coll = io.ImageCollection(data_dir + '/chess*.png')
>>> len(coll)
2
>>> coll[0].shape
(200, 200)
>>> image_col = io.ImageCollection([f'{data_dir}/*.png', '{data_dir}/*.jpg'])
>>> class MultiReader:
...     def __init__ (self, f):
...         self.f = f
...     def __call__ (self, index):
...         return iio3.imread(self.f, index=index)
...
>>> filename = data_dir + '/no_time_for_that_tiny.gif'
>>> ic = io.ImageCollection(range(24), load_func=MultiReader(filename))
>>> len(image_col)
23
>>> isinstance(ic[0], np.ndarray)
True
属性::
filesstr 列表

如果为load_pattern提供了模式字符串,则此属性存储扩展的文件列表。否则,它将等于load_pattern

__init__(load_pattern, conserve_memory=True, load_func=None, **load_func_kwargs)[source]#

加载和管理图像集合。

concatenate()[source]#

将集合中的所有图像连接成一个数组。

返回:
arnp.ndarray

一个比 self 中的图像多一个维度的数组。

引发:
ValueError

如果 skimage.io.ImageCollection 中的图像形状不相同。

property conserve_memory#
property files#
reload(n=None)[source]#

清除图像缓存。

参数:
nNone 或 int

只清除此图像的缓存。默认情况下,整个缓存会被清除。

class skimage.io.MultiImage(filename, conserve_memory=True, dtype=None, **imread_kwargs)[source]#

Bases: ImageCollection

一个包含多帧 TIFF 图像所有帧的类。

参数:
load_patternstr 或 str 列表

要加载的模式 glob 或文件名。路径可以是绝对路径或相对路径。

conserve_memorybool, 可选

是否通过仅缓存单个图像的帧来节省内存。默认值为 True。

备注

MultiImage 返回一个图像数据数组列表。在这方面,它与 ImageCollection 非常相似,但两者在处理多帧图像的方式上有所不同。

对于包含大小为 WxH 的 N 帧的 TIFF 图像,MultiImage 将该图像的所有帧存储为列表中形状为 (N, W, H) 的单个元素。 ImageCollection 则创建形状为 (W, H) 的 N 个元素。

对于动画 GIF 图像,MultiImage 仅读取第一帧,而 ImageCollection 默认读取所有帧。

示例

# 您的图像所在的位置 >>> data_dir = os.path.join(os.path.dirname(__file__), ‘../data’)

>>> multipage_tiff = data_dir + '/multipage.tif'
>>> multi_img = MultiImage(multipage_tiff)
>>> len(multi_img)  # multi_img contains one element
1
>>> multi_img[0].shape  # this element is a two-frame image of shape:
(2, 15, 10)
>>> image_col = ImageCollection(multipage_tiff)
>>> len(image_col)  # image_col contains two elements
2
>>> for frame in image_col:
...     print(frame.shape)  # each element is a frame of shape (15, 10)
...
(15, 10)
(15, 10)
__init__(filename, conserve_memory=True, dtype=None, **imread_kwargs)[source]#

加载一个 multi-img。

concatenate()[source]#

将集合中的所有图像连接成一个数组。

返回:
arnp.ndarray

一个比 self 中的图像多一个维度的数组。

引发:
ValueError

如果 skimage.io.ImageCollection 中的图像形状不相同。

property conserve_memory#
property filename#
property files#
reload(n=None)[source]#

清除图像缓存。

参数:
nNone 或 int

只清除此图像的缓存。默认情况下,整个缓存会被清除。