skimage.io#

读取和保存图像和视频。

concatenate_images

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

imread

从文件加载图像。

imread_collection

加载图像集合。

imread_collection_wrapper

imsave

将图像保存到文件。

load_sift

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

load_surf

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

pop

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

push

将图像推入共享图像堆栈。

ImageCollection

加载和管理图像文件集合。

MultiImage

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


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

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

参数:
ic可迭代的图像

要连接的图像。

返回:
array_catndarray

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

引发:
ValueError

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

备注

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


skimage.io.imread(fname, as_gray=False, plugin=<已弃用>, **plugin_args)[源代码]#

从文件加载图像。

参数:
fnamestr 或 pathlib.Path

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

as_graybool,可选

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

返回:
img_arrayndarray

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

其他参数:
plugin_args已弃用

插件基础设施已弃用。

plugin已弃用

plugin 已弃用。

自版本 0.25 起已弃用。


skimage.io.imread_collection(load_pattern, conserve_memory=True, plugin=<已弃用>, **plugin_args)[源代码]#

加载图像集合。

参数:
load_patternstr 或 list

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

conserve_memorybool,可选

如果为 True,则在特定时间永远不会在内存中保留多个图像。否则,图像将在加载后被缓存。

返回:
icImageCollection

图像集合。

其他参数:
plugin_args已弃用

插件基础设施已弃用。

plugin已弃用

plugin 已弃用。

自版本 0.25 起已弃用。


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

skimage.io.imsave(fname, arr, plugin=<已弃用>, *, check_contrast=True, **plugin_args)[源代码]#

将图像保存到文件。

参数:
fnamestr 或 pathlib.Path

目标文件名。

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

图像数据。

check_contrastbool,可选

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

其他参数:
plugin_args已弃用

插件基础设施已弃用。

plugin已弃用

plugin 已弃用。

自版本 0.25 起已弃用。


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

从外部生成的文件读取 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)[源代码]#

从外部生成的文件读取 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.pop()[源代码]#

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

返回:
imgndarray

从堆栈中弹出的图像。


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

将图像推入共享图像堆栈。

参数:
imgndarray

要推送的图像。

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 在特定时间不会在内存中保留多个图像。否则,图像将在加载后被缓存。

属性:
filesstr 列表

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

其他参数:
load_func可调用对象

默认为 imread。请参阅下面的备注。

**load_func_kwargs**字典

任何其他关键字参数都会传递给 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_funcload_pattern 是一个序列,则会创建一个相应长度的 skimage.io.ImageCollection,并且将通过调用 load_func 并将 load_pattern 的匹配元素作为其第一个参数来加载各个图像。在这种情况下,序列的元素不需要是现有文件的名称(或任何字符串)。例如,要从一个视频中创建一个包含 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)[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]#

基类: ImageCollection

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

参数:
load_patternstr 或 str 列表

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

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)[source]#

加载多图像。

concatenate()[source]#

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

返回:
arnp.ndarray

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

引发:
ValueError

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

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

清除图像缓存。

参数:
nNone 或 int

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