我正在从http://oceancolor.gsfc.nasa.gov/DOCS/DistFromCoast/加载tiff文件
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
?
4条答案
按热度按时间bpzcxfmw1#
可能你没有太多的内存用于此图像。你至少需要一些超过1.3GB的可用内存。
我不知道你是怎么处理图像的,你会把整个图像读入内存,但是我建议你一点一点地读,如果可能的话,这样可以避免破坏你的计算机。你可以使用
Image.getdata()
,它每次返回一个像素。也可通过此链接阅读更多有关
Image.open
的信息:http://www.pythonware.com/library/pil/handbook/
dgtucam12#
到目前为止,我已经测试了许多替代品,但只有gdal工作总是即使巨大的16位图像。
您可以使用以下命令打开图像:
kadbb4593#
我有1到3 GB之间的大型tif文件,Image.open在手动将www.example.com源代码中MAX_IMAGE_PIXELS的值更改为任意大的数字后,Image.py:
30byixjq4#
对于Python 32位2.7版,你会受到在给定时间内可以添加到堆栈的字节数的限制。一个选择是读入图像的各个部分,然后调整各个块的大小,并将它们重新组装成一个需要较少RAM的图像。
我建议使用
libtiff
和opencv
包。