[英]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.shape
和im.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.