Scikit Image - 使用插件
插件是指扩展或外部软件组件,可通过向程序添加特定功能来增强程序的功能,从而改善其功能。
Python Scikit Image 中的插件
Python scikit-image (skimage) 库附带各种插件,可用于处理图像 IO 操作,例如读取、写入和显示图像。scikit-image 库中可用的插件包括 Matplotlib、PIL(Python 图像库)、GDAL、SimpleITK、tifffile、PyFITS 和 ImageIO 等流行库。每个插件都专门用于特定的图像 IO 操作。
scikit-image 库根据需要加载插件,以确保最佳性能并实现高效的资源利用。这意味着只有在明确需要或设置为默认值时才会加载插件。这种动态加载机制可确保仅加载必要的插件,具体取决于特定的图像 I/O 操作。
此外,scikit-image 库提供了一系列功能工具来处理和操作插件。这些工具允许用户自定义他们的图像 IO 操作,让我们讨论一下 skimage.io 模块中可用的一些关键插件函数。
列出可用的插件
函数 io.find_available_plugins(loaded=False) 用于列出 scikit-image (skimage.io) 中的可用插件。它返回一个字典,其中插件名称作为键,公开的函数作为值。以下是此函数的语法 −
skimage.io.find_available_plugins(loaded=False)
参数"loaded"采用布尔值。如果设置为True,则仅显示已加载的插件。默认情况下,显示所有插件。
示例 1
以下示例演示了如何使用io.find_available_plugins() 函数列出所有可用插件及其相应的公开函数。
import skimage.io as io # 列出所有可用插件 available_plugins = io.find_available_plugins() # 显示插件名称及其公开函数 for plugin_name, exposed_functions in available_plugins.items(): print('Plugin:', plugin_name) print("Exposed Functions:", exposed_functions) print()
输出
Plugin: fits Exposed Functions: ['imread', 'imread_collection'] Plugin: gdal Exposed Functions: ['imread', 'imread_collection'] Plugin: gtk Exposed Functions: ['imshow'] Plugin: imageio Exposed Functions: ['imread', 'imsave', 'imread_collection'] Plugin: imread Exposed Functions: ['imread', 'imsave', 'imread_collection'] Plugin: matplotlib Exposed Functions: ['imshow', 'imread', 'imshow_collection', 'imread_collection'] Plugin: pil Exposed Functions: ['imread', 'imsave', 'imread_collection'] Plugin: qt Exposed Functions: ['imshow', 'imsave', 'imread', 'imread_collection'] Plugin: simpleitk Exposed Functions: ['imread', 'imsave', 'imread_collection'] Plugin: tifffile Exposed Functions: ['imread', 'imsave', 'imread_collection']
示例 2
让我们只获取已加载插件的信息。
from skimage import io # 仅列出已加载的插件 available_plugins = io.find_available_plugins(loaded=True) # 显示已加载的插件名称及其公开的功能 for plugin_name, exposed_functions in available_plugins.items(): print('Plugin:', plugin_name) print("Exposed Functions:", exposed_functions) print()
输出
Plugin: imageio Exposed Functions: ['imread', 'imsave', 'imread_collection'] Plugin: matplotlib Exposed Functions: ['imshow', 'imread', 'imshow_collection', 'imread_collection'] Plugin: tifffile Exposed Functions: ['imread', 'imsave', 'imread_collection']
检索有关特定插件的信息
函数 io.plugin_info(plugin) 用于检索有关特定插件的信息。它返回一个包含有关插件的信息(例如描述)的字典,并且只提供可用的函数名称。以下是此函数的语法 −
skimage.io.plugin_info(plugin)
参数"plugin"采用一个字符串,表示您要检索信息的插件的名称。
示例 1
以下示例演示如何使用io.plugin_info()函数检索有关"pil"插件的信息。
from skimage import io # 获取有关"pil"插件的信息 plugin_info = io.plugin_info('pil') # 打印插件信息 print("Description:", plugin_info['description']) print("Available Functions:", plugin_info['provides']) print()
输出
Description: Image reading via the Python Imaging Library Available Functions: imread, imsave
示例 2
在此示例中,我们将获取有关"matplotlib"插件的信息。
from skimage import io # 获取有关"matplotlib"插件的信息 plugin_info = io.plugin_info('matplotlib') # 打印插件信息 print("Description:", plugin_info['description']) print("Available Functions:", plugin_info['provides']) print()
输出
Description: Display or save images using Matplotlib Available Functions: imshow, imread, imshow_collection, _app_show
检索插件顺序
io.plugin_order() 函数用于获取当前首选的插件顺序。以下是此函数的语法 −
skimage.io.plugin_order()
该函数返回一个字典,其中函数名称作为键,相应的值是按优先顺序排列的插件列表。
示例
以下是使用 plugin_order() 函数获取当前首选的插件顺序的示例。
from skimage import io # 获取当前首选的插件顺序 order_dict = io.plugin_order() # 打印插件加载顺序 print("Preferred Plugin Order:") for function_name, plugins in order_dict.items(): print("Function:", function_name) print("Plugins in order of preference:", plugins) print()
输出
Preferred Plugin Order: Function: imread Plugins in order of preference: ['imageio', 'matplotlib'] Function: imsave Plugins in order of preference: ['imageio'] Function: imshow Plugins in order of preference: ['matplotlib'] Function: imread_collection Plugins in order of preference: ['imageio', 'matplotlib'] Function: imshow_collection Plugins in order of preference: ['matplotlib'] Function: _app_show Plugins in order of preference: ['matplotlib']
设置默认插件
io.use_plugin() 函数用于为指定操作设置默认插件。
如果尚未加载,则将加载指定的插件。以下是此函数的语法 −
skimage.io.use_plugin(name, kind=None)
以下是此函数的参数 −
- name − 表示插件名称的字符串将被设置为默认值。
- kind(可选) − 字符串表示要为其设置插件的特定功能。它可以采用以下值之一:'imsave'、'imread'、'imshow'、'imread_collection'、'imshow_collection'。默认情况下,为所有功能设置插件。
示例
以下示例显示了设置默认插件后插件加载顺序的变化。
from skimage import io # 获取当前首选的插件顺序 order_dict_1 = io.plugin_order() # 打印插件加载顺序 print("Plugin Order before Setting the default plugin:") for function_name, plugins in order_dict_1.items(): print(function_name) print("Plugin order:", plugins) print() # 设置所有函数的默认插件 io.use_plugin('qt') # 设置默认插件后获取首选插件顺序 order_dict_2 = io.plugin_order() # 打印插件加载顺序 print("Plugin Order after setting the default plugin: ") for function_name, plugins in order_dict_2.items(): print(function_name) print("Plugin order:", plugins) print()
输出
Plugin Order before Setting the default plugin: imread Plugin order: ['imageio', 'matplotlib'] imsave Plugin order: ['imageio'] imshow Plugin order: ['matplotlib'] imread_collection Plugin order: ['imageio', 'matplotlib'] imshow_collection Plugin order: ['matplotlib'] _app_show Plugin order: ['matplotlib'] Plugin Order after setting the default plugin: imread Plugin order: ['qt', 'imageio', 'matplotlib'] imsave Plugin order: ['qt', 'imageio'] imshow Plugin order: ['qt', 'matplotlib'] imread_collection Plugin order: ['qt', 'imageio', 'matplotlib'] imshow_collection Plugin order: ['matplotlib'] _app_show Plugin order: ['qt', 'matplotlib']
将插件重置为默认状态
函数 io.reset_plugins() 用于将插件状态重置为默认/初始状态。即,没有加载任何插件。以下是此函数的语法 −
skimage.io.reset_plugins()
示例
以下示例演示了如何使用 io.reset_plugins() 函数将插件状态重置为默认状态。并在将插件状态重置为默认值之前和之后检索插件顺序。
from skimage import io # 获取当前首选的插件顺序 order_dict_1 = io.plugin_order() # 打印插件加载顺序 print("Plugin Order before Resetting to the default state:") for function_name, plugins in order_dict_1.items(): if function_name == 'imread': print('Function',function_name) print("Plugin order:", plugins) print() # 将插件状态重置为默认状态 io.reset_plugins() # 获取重置为默认状态后的首选插件顺序 order_dict_2 = io.plugin_order() # 打印插件加载顺序 print("Plugin Order after Resetting to the default state: ") for function_name, plugins in order_dict_2.items(): if function_name == 'imread': print('Function',function_name) print("Plugin order:", plugins) print()
输出
Plugin Order before Resetting to the default state: Function imread Plugin order: ['pil', 'imageio', 'matplotlib'] Plugin Order after Resetting to the default state: Function imread Plugin order: ['imageio', 'matplotlib']
特定功能的适当插件
io.call_plugin() 函数用于查找指定功能的适当插件并执行它。以下是此函数的语法 −
skimage.io.call_plugin(kind, *args, **kwargs)
以下是此函数的参数 −
- kind (str) − 要查找的函数。它可以采用以下值之一:'imshow'、'imsave'、'imread'、'imread_collection'。
- plugin (str, 可选) − 要加载的特定插件。如果未提供(默认为 None),则将使用第一个匹配的插件。
- *args, **kwargs − 将传递给插件函数的附加参数和关键字参数。
示例
以下示例演示了如何使用 io.call_plugin() 函数使用适合图像读取功能的插件加载图像文件。
import numpy as np from skimage import io img_array = io.call_plugin('imread', 'Images_/black rose.jpg') print("Image Arary Shape:",img_array.shape)
输出
Image Arary Shape: (2848, 4272, 3)
该函数加载图像文件并将其作为 NumPy 数组返回,该数组被分配给 img_array 变量。