本文总结了使用
PIL Image, cv2, gdal.Open
三种python package 读取多通道Tiff格式遥感影像的方法。
PIL.Image
PIL对Tiff只支持两种格式的图像:
- 多通道8bit图像
- 单通道int16, int32, float32图像
多通道多bit的tiff图像PIL不支持读取。
file = Image.open(tiff_file))
# 也可以读取之后进行格式转换:
img = np.array(Image.open(tiff_file)).astype(np.float32)
cv2
cv2的读取可以选择一下几种类型:
img = cv2.imread(tiff_file, arg)
# arg = -1: 8bit原通道
# arg = 2: 原深度单通道
# arg = 3: 原深度三通道
gdal
from osgeo import gdal
img = gdal.Open(tiff_file)
# 查看通道数
img.RasterCount
# 读取至数组格式
img = img.ReadAsArray()
print(img.shape) > 会得到(channel, height, widht)
img = img.transpose(1,2,0) > 得到(height, width, channel)
print(np.array(img).dtype)
img = np.array(img, dtype = np.uint16)