skimage.io#

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

以下插件可用:

插件

描述

imread

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

gdal

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

simpleitk

通过 SimpleITK 进行图像读写

pil

通过 Python Imaging Library 读取图像

fits

通过 PyFITS 读取 FITS 图像

matplotlib

使用 Matplotlib 显示或保存图像

tifffile

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

imageio

通过 ImageIO 库读取图像

skimage.io.call_plugin

找到适当类型的插件并执行它。

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)[源代码][源代码]#

找到适当类型的插件并执行它。

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

查找的函数。

插件str, 可选

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

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

传递给插件函数。


skimage.io.concatenate_images(ic)[源代码][源代码]#

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

参数:
ic图像的可迭代对象

要连接的图像。

返回:
array_catndarray

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

Raises:
ValueError

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

注释

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


skimage.io.find_available_plugins(loaded=False)[源代码][源代码]#

列出可用插件。

参数:
已加载布尔

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

返回:
pdict

以插件名称为键、暴露函数为值的字典。


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

从文件加载图像。

参数:
fnamestr 或 pathlib.Path

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

as_graybool, 可选

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

插件str, 可选

要使用的插件名称。默认情况下,会尝试不同的插件(从 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)[源代码][源代码]#

加载一组图像。

参数:
load_pattern字符串或列表

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

conserve_memorybool, 可选

如果为 True,在特定时间内存中不会保留超过一张图片。否则,图片一旦加载就会被缓存。

返回:
ic : 图像集合ImageCollection

图片集合。

其他参数:
plugin_args关键词

传递给指定的插件。


skimage.io.imread_collection_wrapper(imread)[源代码][源代码]#

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

将图像保存到文件。

参数:
fnamestr 或 pathlib.Path

目标文件名。

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

图像数据。

插件str, 可选

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

检查对比度bool, 可选

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

其他参数:
plugin_args关键词

传递给指定的插件。

注释

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


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

显示一张图片。

参数:
arrndarray 或 str

图像数据或图像文件的名称。

插件str

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

其他参数:
plugin_args关键词

传递给指定的插件。

区域邻接图 (RAG) 合并

Region adjacency graph (RAG) Merging

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

显示一组图像。

参数:
ic : 图像集合ImageCollection

要显示的集合。

插件str

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

其他参数:
plugin_args关键词

传递给指定的插件。


skimage.io.load_sift(f)[源代码][源代码]#

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

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

This routine does not generate SIFT/SURF features from an image. These algorithms are patent encumbered. Please use skimage.feature.CENSURE instead.

参数:
类文件对象字符串或打开的文件

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

模式{‘SIFT’, ‘SURF’}, 可选

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

返回:
数据带有字段的记录数组
  • row: int

    特征的行位置

  • column: int

    特征的列位置

  • scale: float

    特征尺度

  • orientation: float

    功能导向

  • 数据:数组

    特征值


skimage.io.load_surf(f)[源代码][源代码]#

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

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

This routine does not generate SIFT/SURF features from an image. These algorithms are patent encumbered. Please use skimage.feature.CENSURE instead.

参数:
类文件对象字符串或打开的文件

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

模式{‘SIFT’, ‘SURF’}, 可选

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

返回:
数据带有字段的记录数组
  • row: int

    特征的行位置

  • column: int

    特征的列位置

  • scale: float

    特征尺度

  • orientation: float

    功能导向

  • 数据:数组

    特征值


skimage.io.plugin_info(plugin)[源代码][源代码]#

返回插件元数据。

参数:
插件str

插件名称。

返回:
mdict

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


skimage.io.plugin_order()[源代码][源代码]#

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

返回:
pdict

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


skimage.io.pop()[源代码][源代码]#

从共享图像堆栈中弹出一个图像。

返回:
imgndarray

从堆栈中弹出的图像。


skimage.io.push(img)[源代码][源代码]#

将一个图像推送到共享图像堆栈。

参数:
imgndarray

要推送的图像。


skimage.io.reset_plugins()[源代码][源代码]#

skimage.io.show()[源代码][源代码]#

显示待处理图像。

启动当前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() 

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

Region Boundary based Region adjacency graphs (RAGs)

区域邻接图 (RAG) 合并

Region adjacency graph (RAG) Merging

skimage.io.use_plugin(name, kind=None)[源代码][源代码]#

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

参数:
名称str

插件名称。查看 skimage.io.available_plugins 获取可用插件列表。

种类{‘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)[源代码][源代码]#

基类:object

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

参数:
load_patternstr 或 str 的列表

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

conserve_memorybool, 可选

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

属性:
文件list of str

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

其他参数:
load_func可调用

imread 默认情况下。见下文注释。

**加载函数参数dict

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

注释

请注意,文件总是按字母数字顺序返回。还要注意,切片返回一个新的 skimage.io.ImageCollection,而不是数据的视图。

ImageCollection 图像加载可以通过 load_func 进行自定义。对于一个 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
__init__(load_pattern, conserve_memory=True, load_func=None, **load_func_kwargs)[源代码][源代码]#

加载和管理一组图像。

concatenate()[源代码][源代码]#

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

返回:
arnp.ndarray

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

Raises:
ValueError

如果 skimage.io.ImageCollection 中的图像形状不一致。

property conserve_memory#

!! 由 numpydoc 处理 !!

property files#

!! 由 numpydoc 处理 !!

reload(n=None)[源代码][源代码]#

清除图像缓存。

参数:
n无或整数

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

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

基类:ImageCollection

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

参数:
load_patternstr 或 str 的列表

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

conserve_memorybool, 可选

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

注释

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

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

对于一个动画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)[源代码][源代码]#

加载多张图片。

concatenate()[源代码]#

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

返回:
arnp.ndarray

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

Raises:
ValueError

如果 skimage.io.ImageCollection 中的图像形状不一致。

property conserve_memory#

!! 由 numpydoc 处理 !!

property filename#

!! 由 numpydoc 处理 !!

property files#

!! 由 numpydoc 处理 !!

reload(n=None)[源代码]#

清除图像缓存。

参数:
n无或整数

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