【问题标题】:Load TIFF image as numpy array将 TIFF 图像加载为 numpy 数组
【发布时间】:2015-05-21 17:18:28
【问题描述】:

我有一系列 tiff 图像要在 Python 中加载。

我首先使用:

im=Image.open(*)

它可以正确加载和显示。

>>> im
PIL.TiffImagePlugin.TiffImageFile image mode=I;16 size=1408x1044 at 0x116154050
>>> type(im)
instance
>>> im.size
(1408, 1044)

然后我使用:

imarray=numpy.array(im)

在哪里

>>> imarray.shape
()
>>> imarray.size
1
>>> type(imarray)
numpy.ndarray
>>>  imarray
array(PIL.TiffImagePlugin.TiffImageFile image mode=I;16 size=1408x1044 at 0x116154050, dtype=object)

我已阅读 this previous post 并按照那里的说明进行操作,但我无法让 imarray.shapeim.size 匹配。

【问题讨论】:

  • 这可能与您的 PIL 版本有关。您是否尝试过here 建议的解决方案?
  • 如果您打算进行任何类型的图像处理,我建议您使用 OpenCV。它们具有 Python 绑定,让您的生活更轻松,包括自动将图像转换为 numpy 数组。
  • @KronoS OpenCV 对于简单的图像 I/O 来说是大量过度杀伤力。 Pillow 甚至 matplotlib 提供更轻量级的解决方案。
  • @ali_m 我同意,但是,如果 OP 想要对图像进行操作,那么重量级的 OpenCV 就派上用场了。
  • @KronoS 我们还不知道 OP 想要对图像实际做什么,所以在这个阶段我不会直接推荐 OpenCV

标签: python arrays numpy python-imaging-library


【解决方案1】:

对于 TIFF 图像,您可以简单地使用 imageio

im = imageio.imread('filename')

有时你可能还需要

im = np.array(im)

【讨论】:

    【解决方案2】:

    这是一个将数据复制到 numpy 数组中的解决方案。

        from PIL import Image
        import numpy as np
        import ubelt as ub
    
        # Grab some test data
        fpath = ub.grabdata('http://www.topcoder.com/contest/problem/UrbanMapper3D/JAX_Tile_043_DTM.tif')
    
        # Open the tiff image
        pil_img = Image.open(fpath)
    
        # Map PIL mode to numpy dtype (note this may need to be extended)
        dtype = {'F': np.float32, 'L': np.uint8}[pil_img.mode]
    
        # Load the data into a flat numpy array and reshape
        np_img = np.array(pil_img.getdata(), dtype=dtype)
        w, h = pil_img.size
        np_img.shape = (h, w, np_img.size // (w * h))
    

    【讨论】:

    • 谢谢你,这帮助很大。请考虑dtype 转换字典只是部分的,在特殊情况下可能会引发KeyError。例如,我的图像的“模式”是“I;16”,转换为np.uint16
    • 是的,因此“可能需要扩展”注释。
    猜你喜欢
    • 2021-12-27
    • 1970-01-01
    • 2017-09-21
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    相关资源
    最近更新 更多