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 库进行图像读取 |
查找适合的 ‘kind’ 插件并执行它。 |
|
将图像集合中的所有图像连接成一个数组。 |
|
列出可用的插件。 |
|
从文件加载图像。 |
|
加载一组图像。 |
|
将图像保存到文件。 |
|
显示图像。 |
|
显示一组图像。 |
|
从外部生成的 文件读取 SIFT 或 SURF 特征。 |
|
从外部生成的 文件读取 SIFT 或 SURF 特征。 |
|
返回插件元数据。 |
|
返回当前首选的插件顺序。 |
|
从共享图像栈中弹出图像。 |
|
将图像推送到共享图像栈。 |
|
显示待处理的图像。 |
|
设置指定操作的默认插件。 |
|
加载和管理一组图像文件。 |
|
一个包含多帧 TIFF 图像所有帧的类。 |
|
|
用于保存图像集合的数据结构,可以选择缓存。 |
|
处理图像读取、写入和绘图插件。 |
|
|
|
- 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,则一次只保留一个图像在内存中。否则,将加载图像后缓存图像。
- 返回:
- ic
ImageCollection
一组图像。
- ic
- 其他参数:
- plugin_args关键字
传递给给定插件。
- 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) 合并
- skimage.io.imshow_collection(ic, plugin=None, **plugin_args)[source]#
显示一组图像。
- 参数:
- ic
ImageCollection
要显示的集合。
- pluginstr
要使用的插件名称。默认情况下,会尝试使用不同的插件,直到找到合适的候选插件。
- ic
- 其他参数:
- 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.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) 合并
- 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
ic
,ic[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#
- 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)
- concatenate()[source]#
将集合中的所有图像连接成一个数组。
- 返回:
- arnp.ndarray
一个比 self 中的图像多一个维度的数组。
- 引发:
- ValueError
如果
skimage.io.ImageCollection
中的图像形状不相同。
- property conserve_memory#
- property filename#
- property files#