- Scikit Image 教程
- Scikit Image - 简介
- Scikit Image - 图像处理
- Scikit Image - Numpy 图像
- Scikit Image - 图像数据类型
- Scikit Image - 使用插件
- Scikit Image - 图像处理
- Scikit Image - 读取图像
- Scikit Image - 写入图像
- Scikit Image - 显示图像
- Scikit Image - 图像集合
- Scikit Image - 图像堆栈
- Scikit Image - 多个图像
Scikit Image - 图像集合
在计算机视觉和图像处理中,图像集合是一个术语,用于描述一组或一组图像,这些图像被视为一个整体,以便同时管理和处理多个图像。
它可以用于存储和管理一组相关的图像,例如视频中的一系列帧,或来自各种来源的图像集合。它简化了多个图像的管理和处理,使图像处理和计算机视觉任务更容易处理。
skimage 中的 ImageCollection 类
在 scikit-image 库中,图像集合由一个ImageCollection类表示,该类提供加载、管理和操作图像文件集合的功能。
它允许您指定一个模式或文件名列表,将相应的图像加载到内存中,并方便地访问它们。以下是此类的语法:
class skimage.io.ImageCollection(load_pattern, conserve_memory=True, load_func=None, **load_func_kwargs)
以下是类的参数:
- load_pattern - 表示要加载的文件名模式的字符串或字符串列表。文件名路径可以是绝对路径或相对路径。
- conserve_memory(可选) - 布尔值。如果设置为 True,则一次只保留一个图像在内存中。如果设置为 False,则加载后将缓存图像以提高后续访问速度。
- load_func(可选) - 用于读取图像文件的可调用对象。默认情况下,它使用 scikit-image 库中的 imread 函数。但是,如果需要,您可以指定不同的函数。
- **load_func_kwargs(可选) - 传递给 load_func 函数的其他关键字参数。
它创建一个 ImageCollection 对象,允许您对加载的图像执行各种操作,例如遍历集合、访问单个图像以及对整个集合应用操作。
示例 1
以下示例将演示如何加载指定目录中的所有 JPEG 文件。生成的 ImageCollection 对象将存储在 collection 变量中。
from skimage import io # Load all the JPEG files in a directory collection = io.ImageCollection('Images_/*.jpg') print('Type:',type(collection)) print('Total loaded JPEG files are',len(collection))
输出
输出显示了 collection 对象的类型和加载的 JPEG 文件的数量。
Type: < class 'skimage.io.collection.ImageCollection'> Total loaded JPEG files are 5
示例 2
以下示例演示了如何使用 ImageCollection 对象的 files 属性访问扩展文件名。
from skimage import io # Load all the JPEG and PNG files in a directory collection = io.ImageCollection(['Images_/*.jpg', 'Images_/*.png']) # Access the expanded file list file_list = collection.files # Print the list of files one by one print("Files:") for image in file_list: print(image)
输出
Files: Images_\Blank.png Images_\Blank_img.png Images_\ColorDots.png Images_\Trees.jpg Images_\WhiteDots2.jpg Images_\WhiteDots4.jpg Images_\Zoo.jpg Images_\balloons_noisy.png Images_\binary image.png Images_\tree.jpg
您还可以使用 skimage.io 模块中的名为 io.imread_collection() 的直接函数来读取图像集合。
imread_collection() 函数
imread_collection() 函数用于加载图像集合,它将返回一个 ImageCollection 对象,表示加载的图像集合。
以下是函数的语法和参数:
skimage.io.imread_collection(load_pattern, conserve_memory=True, plugin=None, **plugin_args)
以下是此函数的参数:
- load_pattern - 表示要加载的文件名模式的字符串或字符串列表。文件名路径可以是绝对路径或相对路径。
- conserve_memory(可选) - 布尔值。如果设置为 True,则一次只保留一个图像在内存中。如果设置为 False,则加载后将缓存图像以提高后续访问速度。
- plugin_args(可选) - 将传递给所选插件的其他关键字参数。
imread_collection() 是一个方便的包装函数,它在内部创建一个 ImageCollection 对象以加载图像集合。除了直接使用 ImageCollection 类之外,当您需要根据模式或文件名列表快速加载图像时,在简单的用例中使用 imread_collection() 函数是一个好主意。
示例 1
以下示例演示如何加载特定目录中的所有 tiff 文件。
from skimage import io # Load all the tiff images collection = io.imread_collection('Images_/*.tiff', plugin='tifffile') print('Dipaly the tifffile collection:') print(collection)
输出
Dipaly the tifffile collection: ['Images_\\file_example_TIFF_1MB.tiff', 'Images_\\file_example_TIFF_10MB.tiff']
示例 2
以下示例将通过指定字符串列表(模式)加载 tiff 和 JPEG 图像的集合。
from skimage import io # Load a collection of JPEG and tifffile images collection = io.imread_collection(['Image Collection/*.jpg', 'Image Collection/*.tiff']) print('Dipaly the JPEG and tifffile collection:') print(collection)
输出
Dipaly the JPEG and tifffile collection: ['Image Collection\\Trees.jpg', 'Image Collection\\WhiteDots2.jpg', 'Image Collection\\WhiteDots4.jpg', 'Image Collection\\Zoo.jpg', 'Image Collection\\file_example_TIFF_1MB.tiff', 'Image Collection\\file_example_TIFF_10MB.tiff', 'Image Collection\\tree.jpg']
Imread_collection_wrapper() 函数
imread_collection_wrapper 是一个装饰器函数,用于创建 imread_collection() 函数的自定义版本。此包装函数封装了使用指定的图像读取函数创建 ImageCollection 对象的逻辑。
以下是此函数的语法:
skimage.io.imread_collection_wrapper(imread)
imshow_collection() 函数
imshow_collection() 函数用于显示图像集合。它将 ImageCollection 对象作为输入,并显示集合中包含的图像。
以下是函数的语法和参数:
skimage.io.imshow_collection(ic, plugin=None, **plugin_args)
以下是参数:
- ic - 表示要显示的图像集合的 ImageCollection 对象。
- plugin(可选) - 指定用于图像显示的插件名称的字符串。默认情况下,将尝试不同的插件,直到找到合适的插件。
- plugin_args - 传递给所选插件以进行图像显示的其他关键字参数。
示例
以下示例演示了如何使用 imshow_collection() 函数来显示图像集合。
from skimage import io # Load all the JPEG and PNG files in a directory collection = io.ImageCollection('Images_/*.jpg') # Access the expanded file list file_list = collection.files # Print the list of files one by one print("Files:") for image in file_list: print(image) # Display the collection of images io.imshow_collection(collection) io.show()
输出
运行以上代码将得到以下结果: