真的很惊讶,但我找不到任何关于
img_arrayndarray
的文档,这是 skimage 的 imread 返回的内容。
https://scikit-image.org/docs/dev/api/skimage.io.html#skimage.io.imread
我的主要问题是这个对象有什么属性/方法等。
或者,文档如此缺乏是否有原因?例如,将 imread 转换为 numpy 数组是常见的做法吗?谢谢
测试功能,
使用Python 2.7.13,Ipython 5.1.0,skimage 0.13.0,
和 Python 3.6.7、Ipython 7.4.0、skimage 0.15.0:
In [1]: from skimage import io In [2]: a = io.imread('testimg.tif') In [3]: type(a) Out[3]: numpy.ndarray
您的文档链接是 skimage 0.16.0,但我认为可以安全地假设文档中存在拼写错误。
编辑:另外,查看来源:
def imread(fname, as_gray=False, plugin=None, flatten=None, **plugin_args): """Load an image from file. Parameters ---------- fname : string Image file name, e.g. ``test.jpg`` or URL. as_gray : bool, optional If True, convert color images to gray-scale (64-bit floats). Images that are already in gray-scale format are not converted. plugin : str, optional Name of plugin to use. By default, the different plugins are tried (starting with imageio) until a suitable candidate is found. If not given and fname is a tiff file, the tifffile plugin will be used. Other Parameters ---------------- plugin_args : keywords Passed to the given plugin. flatten : bool Backward compatible keyword, superseded by `as_gray`. Returns ------- img_array : ndarray The different color bands/channels are stored in the third dimension, such that a gray-image is MxN, an RGB-image MxNx3 and an RGBA-image MxNx4.
更多关于 Stefan 的回答的细节:
scikit-image
内部不实现IO功能,而是将它们包装并委托给外部库(称为“插件”)。
可以在此处查看支持的插件 - https://scikit-image.org/docs/dev/api/skimage.io.html,以及通过调用 skimage 可用于他或她自己的环境的插件.io.find_available_plugins。 插件按照特定的优先级列表加载。
您看到的问题与插件之一中的数据类型验证错误有关。最近,
imageio
插件(https://github.com/scikit-image/scikit-image/pull/3837)修复了类似的错误,并将合并到0.14.3(LTS)、0.15中.1/0.16(最新)版本。