skimage.io
#
读取和保存图像和视频。
将图像集合中的所有图像连接到一个数组中。 |
|
从文件加载图像。 |
|
加载图像集合。 |
|
将图像保存到文件。 |
|
从外部生成的文件读取 SIFT 或 SURF 特征。 |
|
从外部生成的文件读取 SIFT 或 SURF 特征。 |
|
从共享图像堆栈中弹出一个图像。 |
|
将图像推入共享图像堆栈。 |
|
加载和管理图像文件集合。 |
|
一个包含多帧 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,则在特定时间永远不会在内存中保留多个图像。否则,图像将在加载后被缓存。
- 返回:
- ic
ImageCollection
图像集合。
- ic
- 其他参数:
- plugin_args已弃用
插件基础设施已弃用。
- plugin已弃用
plugin
已弃用。自版本 0.25 起已弃用。
- 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
特征值
- 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
进行自定义。对于 ImageCollectionic
,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_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#
- 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)
- concatenate()[source]#
将集合中的所有图像连接成一个数组。
- 返回:
- arnp.ndarray
一个比
self
中的图像多一个维度的数组。
- 引发:
- ValueError
如果
skimage.io.ImageCollection
中的图像不具有相同的形状。
- property conserve_memory#
- property filename#
- property files#