__all__ = ['imread', 'imsave', 'imshow'] from scikits.image.io.plugin import plugin_store def _call_plugin(kind, *args, **kwargs): if not kind in plugin_store: raise ValueError('Invalid function (%s) requested.' % kind) plugin_funcs = plugin_store[kind] if len(plugin_funcs) == 0: raise RuntimeError('No suitable plugin registered for %s' % kind) plugin = kwargs.pop('plugin', None) if plugin is None: _, func = plugin_funcs[0] else: try: func = [f for (p,f) in plugin_funcs if p == plugin][0] except IndexError: raise RuntimeError('Could not find the plugin "%s" for %s.' % \ (plugin, kind)) return func(*args, **kwargs) def imread(fname, as_grey=False, dtype=None, plugin=None, flatten=None, **plugin_args): """Load an image from file. Parameters ---------- fname : string Image file name, e.g. ``test.jpg``. as_grey : bool If True, convert color images to grey-scale. If `dtype` is not given, converted color images are returned as 32-bit float images. Images that are already in grey-scale format are not converted. dtype : dtype, optional NumPy data-type specifier. If given, the returned image has this type. If None (default), the data-type is determined automatically. plugin : str Name of plugin to use. By default, the different plugins are tried (starting with the Python Imaging Library) until a suitable candidate is found. Other Parameters ---------------- flatten : bool Backward compatible keyword, superseded by `as_grey`. Returns ------- img_array : ndarray The different colour bands/channels are stored in the third dimension, such that a grey-image is MxN, an RGB-image MxNx3 and an RGBA-image MxNx4. Other parameters ---------------- plugin_args : keywords Passed to the given plugin. """ # Backward compatibility if flatten is not None: as_grey = flatten return _call_plugin('read', fname, as_grey=as_grey, dtype=dtype, plugin=plugin, **plugin_args) def imsave(fname, arr, plugin=None, **plugin_args): """Save an image to file. Parameters ---------- fname : str Target filename. arr : ndarray of shape (M,N) or (M,N,3) or (M,N,4) Image data. plugin : str Name of plugin to use. By default, the different plugins are tried (starting with the Python Imaging Library) until a suitable candidate is found. Other parameters ---------------- plugin_args : keywords Passed to the given plugin. """ return _call_plugin('save', fname, arr, plugin=plugin, **plugin_args) def imshow(arr, plugin=None, **plugin_args): """Display an image. Parameters ---------- arr : ndarray Image data. plugin : str Name of plugin to use. By default, the different plugins are tried (starting with the Python Imaging Library) until a suitable candidate is found. Other parameters ---------------- plugin_args : keywords Passed to the given plugin. """ return _call_plugin('show', arr, plugin=plugin, **plugin_args)