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 库读取图像 |
找到适当类型的插件并执行它。 |
|
将图像集合中的所有图像连接成一个数组。 |
|
列出可用插件。 |
|
从文件加载图像。 |
|
加载一组图像。 |
|
将图像保存到文件。 |
|
显示一张图片。 |
|
显示一组图像。 |
|
从外部生成的文件中读取SIFT或SURF特征。 |
|
从外部生成的文件中读取SIFT或SURF特征。 |
|
返回插件元数据。 |
|
返回当前首选的插件顺序。 |
|
从共享图像堆栈中弹出一个图像。 |
|
将一个图像推送到共享图像堆栈。 |
|
显示待处理图像。 |
|
为指定的操作设置默认插件。 |
|
加载和管理一组图像文件。 |
|
一个包含多帧TIFF图像所有帧的类。 |
|
|
用于保存图像集合的数据结构,可选缓存。 |
|
处理图像读取、写入和绘图插件。 |
|
|
|
- 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
图片集合。
- ic :
- 其他参数:
- plugin_args关键词
传递给指定的插件。
- 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关键词
传递给指定的插件。
Region adjacency graph (RAG) Merging
- skimage.io.imshow_collection(ic, plugin=None, **plugin_args)[源代码][源代码]#
显示一组图像。
- 参数:
- ic :
图像集合
ImageCollection
要显示的集合。
- 插件str
要使用的插件名称。默认情况下,会尝试不同的插件,直到找到合适的候选者。
- ic :
- 其他参数:
- 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.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()
Region Boundary based Region adjacency graphs (RAGs)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
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
- __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 处理 !!
- class skimage.io.MultiImage(filename, conserve_memory=True, dtype=None, **imread_kwargs)[源代码][源代码]#
-
一个包含多帧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)
- concatenate()[源代码]#
将集合中的所有图像连接成一个数组。
- 返回:
- arnp.ndarray
一个比 self 中的图像多一个维度的数组。
- Raises:
- ValueError
如果
skimage.io.ImageCollection
中的图像形状不一致。
- property conserve_memory#
!! 由 numpydoc 处理 !!
- property filename#
!! 由 numpydoc 处理 !!
- property files#
!! 由 numpydoc 处理 !!