1

我尝试打开一个每像素 16 位和多波段的 tif 图像,以将其转换为原始文件。我将 PIL 与下一个命令一起使用,i = Image.open('image.tif')并且在我使用rawData = i.tostring(). 它不适用于多波段 tif 图像。

错误是:

File "C:\Python27\lib\site-packages\PIL\Image.py", line 1980, in open
    raise IOError("cannot identify image file")
IOError: cannot identify image file

该目录包含该文件。

我必须怎么做?

4

1 回答 1

2

GDAL 非常擅长打开多波段栅格,支持11 种不同的波段类型,包括 int16。

from osgeo import gdal
import numpy as np

ds = gdal.Open('image.tif')

# loop through each band
for bi in range(ds.RasterCount):
    band = ds.GetRasterBand(bi + 1)
    # Read this band into a 2D NumPy array
    ar = band.ReadAsArray()
    print('Band %d has type %s'%(bi + 1, ar.dtype))
    raw = ar.tostring()
于 2012-09-16T21:30:26.503 回答