如何在python中读取大tif文件?

2024-05-12 23:39:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从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


Tags: 文件imageimportnumpyhttpsizenparray
3条回答

可能你没有太多的内存用于这个图像。你需要至少一些超过1.3GB的可用内存。

我不知道你在用图像做什么,你把整个图像都读入了你的记忆,但我建议你一点一点地读,如果可能的话,避免炸毁你的电脑。 您可以使用Image.getdata(),它每次返回一个像素。

也请阅读此链接上有关Image.open的更多信息:

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

到目前为止,我已经测试了许多替代方案,但只有gdal可以始终工作,即使是使用16位的大图像。

您可以使用以下内容打开图像:

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

我有一个介于1到3 GB之间的巨大tif文件,在手动将Image.py源代码中MAX_Image_PIXELS的值更改为任意大数值后,终于用Image.open()打开了它们:

from PIL import Image
im = np.asarray(Image.open("location/image.tif")

相关问题 更多 >