2015-05-26 6 views
2

я загружаю файл в формате TIFF с http://oceancolor.gsfc.nasa.gov/DOCS/DistFromCoast/Как читать большой файл tif в python?

from PIL import Image 
im = Image.open('GMT_intermediate_coast_distance_01d.tif') 

Данные большой (im.size=(36000, 18000) 1.3GB) и обычное преобразование не работает; то есть, imarray.shape возвращает ()

import numpy as np 
imarray=np.zeros(im.size) 
imarray=np.array(im) 

Как я могу преобразовать этот TIFF-файл в numpy.array?

+1

'обычное преобразование не work' - * как * не работает? Каков ваш результат? Чем он отличается от того, что вы ожидаете? Вы получили сообщение об ошибке? Если да, то что говорит трассировка? – That1Guy

+2

Попробуйте [tifffile.py] (http://www.lfd.uci.edu/~gohlke/code/tifffile.py.html). – cgohlke

+0

@ That1Guy 'imarray' - пустой массив – ilciavo

ответ

2

Возможно, у вас не слишком много Ram для этого изображения. Вам понадобится хотя бы более 1,3 ГБ свободной памяти.

Я не знаю, что вы делаете с изображением, и вы все читаете в своей памяти, но я рекомендую вам почитать его понемногу, если это возможно, чтобы не взорвать ваш компьютер. Вы можете использовать Image.getdata(), который возвращает один пиксель за раз.

Также читайте еще немного для Image.open по этой ссылке:

http://www.pythonware.com/library/pil/handbook/

2

До сих пор я испытал много альтернатив, но только gdal работал всегда, даже с огромными 16bit изображениями.

Вы можете открыть изображение с чем-то вроде этого:

from osgeo import gdal 
import numpy as np 
ds = gdal.Open("name.tif") 
channel = np.array(ds.GetRasterBand(1).ReadAsArray()) 
+0

Как установить GDAL для использования с python? –

+1

https://pypi.python.org/pypi/GDAL @ZloySmiertniy –

Смежные вопросы