非常教程

Scikit image参考手册

指南 | Guide

I/O Plugin Infrastructure

一个插件包含两个文件,即源文件和描述符.ini。假设我们想提供一个imshow使用插件matplotlib。我们会打电话给我们的插件mpl

skimage/io/_plugins/mpl.py
skimage/io/_plugins/mpl.ini

.py.ini文件的名称必须对应。在.ini文件内部,我们给插件元数据:

[mpl] <-- name of the plugin, may be anything
description = Matplotlib image I/O plugin
provides = imshow <-- a comma-separated list, one or more of
                      imshow, imsave, imread, _app_show

“provides”行列出了插件提供的所有功能。由于我们的插件提供了imshow,我们必须在里面定义它mpl.py

# This is mpl.py

import matplotlib.pyplot as plt

def imshow(img):
    plt.imshow(img)

请注意,默认情况下,它imshow是非阻塞的,因此_app_show必须提供特殊功能来阻止GUI。我们可以修改我们的插件,如下所示:

[mpl]
provides = imshow, _app_show
# This is mpl.py

import matplotlib.pyplot as plt

def imshow(img):
    plt.imshow(img)

def _app_show():
    plt.show()

导入时_plugins会自动检查目录中的任何插件skimage.io。您可以列出系统中的所有插件:

>>> import skimage.io as io
>>> io.find_available_plugins()
{'gtk': ['imshow'],
 'matplotlib': ['imshow', 'imread', 'imread_collection'],
 'pil': ['imread', 'imsave', 'imread_collection'],
 'qt': ['imshow', 'imsave', 'imread', 'imread_collection'],
 'test': ['imsave', 'imshow', 'imread', 'imread_collection'],}

或者只有那些已经加载的:

>>> io.find_available_plugins(loaded=True)
{'matplotlib': ['imshow', 'imread', 'imread_collection'],
 'pil': ['imread', 'imsave', 'imread_collection']}

使用以下use_plugin命令加载插件:

>>> import skimage.io as io
>>> io.use_plugin('pil') # Use all capabilities provided by PIL

要么

>>> io.use_plugin('pil', 'imread') # Use only the imread capability of PIL

请注意,如果多个插件提供某些功能,则会使用加载的最后一个插件。

要查询插件的功能,请使用plugin_info

>>> io.plugin_info('pil')
>>>
{'description': 'Image reading via the Python Imaging Library',
 'provides': 'imread, imsave'}
Scikit image

Scikit-image 是用于图像处理的 Python 包,使用原生的 NumPy 数组作为图像对象。

主页 http://scikit-image.org/
源码 https://github.com/scikit-image/scikit-image
发布版本 0.13.1