Precessing tiff-files via tifffile.
1. tiff格式图像
标签图像文件格式(Tag Image File Format,TIFF)是图像处理中常用的格式之一。其图像格式很复杂,但由于它对图像信息的存放灵活多变,可以支持很多色彩系统,而且独立于操作系统,因此得到了广泛应用。在各种地理信息系统、摄影测量与遥感等应用中,要求图像具有地理编码信息,例如图像所在的坐标系、比例尺、图像上点的坐标、经纬度、长度单位及角度单位等等。
遥感图像通常尺寸较大(分辨率较高),通道数较多(用于存储不同的波段信息),携带经纬度等地理信息,通常用tiff格式存储。
tiff格式的遥感图像通常包含大于$3$的通道,分别存储不同波段(可见光波段、红外波段等)和透明度信息。并且常用$8$位($0$~$255$)或$16$位($0$~$65535$)精度存储。
2. tifffile库
- 官方网站:PyPI
tifffile库是基于numpy库的tiff格式文件处理库,可实现:
- 将numpy数组存储为tiff格式文件;
- 读取tiff格式文件。
3. 将tiff格式图像转换成png格式
import cv2
import numpy as np
import tifffile as tif
def tif2png(imgpath):
img = tif.imread(imgpath)# 读取图片 imgpath为图片所在位置
# 将图片数据类型转换为无符号8位
img = img/img.max()
img =img*255-0.001 # 减去0.001防止变成负整型
img =img.astype(np.uint8)
print(img.shape) # 显示图片大小和通道数 通道数可能大于3
b = img[:, :, 0] # 蓝通道
g = img[:, :, 1] # 绿通道
r = img[:, :, 2] # 红通道
nir = img[:, :, 3] # 近红外通道
# 通道拼接
rgb= np.dstack([r,g,b])
# 存储png格式图像
cv2.imwrite("image.png", rgb)
'''
cv2.waitKey(0) # 窗口等待响应
cv2.destroyAllWindows() # 消除窗口
'''
if __name__ == "__main__":
tif2png('image.tif')