簡體   English   中英

將 TIFF 圖像加載為 numpy 數組

[英]Load TIFF image as numpy array

我有一系列 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)

我已經閱讀了上imarray.shape 文章並按照那里的說明進行了操作,但是我無法讓imarray.shapeim.size匹配。

這是一個將數據復制到 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))

對於 TIFF 圖像,您可以簡單地使用imageio

im = imageio.imread('filename')

有時您可能還需要

im = np.array(im)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM