在做比赛和科研过程中,经常会遇到Tif格式图片的读取与保存,特此开帖,总结使用过程中的一些问题与各种库的特点。写的比较浅薄,欢迎补充与指正。
CV读取
CV2用IMREAD_UNCHANGED可以读unit 16位 多通道tif格式,但不知道为什么读不了14G的原始数据image.tif,可能图太大了
且用CV2读图,查看img.shape时,少了一维,(其实图片本身还是三维的)
import cv2
img = cv2.imread('./image_5.tif', cv2.IMREAD_UNCHANGED)
print(img.shape)
Tiff
- 通过tiff.imsave保存的图片,与原始数据相同,但缺少了头文件,导致在PS读取时变为灰度图。
import tifffile as tiff
import numpy as np
img = tiff.imread('./image_5.tif') #tiff.imread读图
print(img.shape)
img = img.transpose([1, 2, 0])
col = 0
n = 0
while(col + 10000 < 50362):
tiff.imsave('./image_%d.tif'%n, img[:, :, n*10000:(n+1)*10000])
col = col + 10000
n = n+1
tiff.imsave('./image_%d.tif'%n, img[:, :, 500