我尝试打开一个每像素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
该目录包含该文件。
我该怎么做?
答案 0 :(得分:2)
GDAL非常擅长打开多波段栅格,支持11 different band types,包括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()