在我们进行图片处理的时候会遇到普通的JPG、PNG、TIFF等图片,但是TIFF图片由于其特殊性,每一张都会超乎寻常地大,而且不一定只有RGB或者BGR三个通道,有时候TIFF图片还会有红外通道,遥感信息通道等各种,这也变相导致了TIFF图片的位数很深。而我们在读取图片的时候会选择PIL包或者OpenCV-Python下的cv2包,这些包读取RGB或者BGR还挺好使,一到ITIFF就很麻烦,所以我找到了一个tifffile包,专门解决这个问题。
tifffile提供了读取函数与写入函数,虽然通过PIL与matplotlib同样可以读写显示tiff灰度图的局部,但是使用起来并不方便。
超大的tiff可以通过tifffil包读取成为一个大型的nupmy.ndarray矩阵,这样就得到了一个储存图片信息的矩阵,这样个情况下对矩阵进行切割就相当于对图片进行切割。
多位的tiff图只需要将不同的通道同时在同一位置进行同等大小的切割,再进行叠加即可。而灰度图的切割显得更加简单,只需要进行一次切割再储存即可。
灰度图的切割代码如下:
# -*- coding: utf-8 -*-
"""
@author:xiaoyangchicao2020
@time:2022-99-99
"""
import tifffile as tff
tiff1=tff.imread(r'C:\Users\MI\Desktop\test\test2.tif')
test=tiff1[1493:,:]
tff.imwrite(r'C:\Users\MI\Desktop\test\test2.tif',test)
需要注意的是,tifffi包的安装下载可以通过更换不同的源进行下载,或者直接下载之后放入工作文件夹,直接pip或者pip3会出现无法下载或者找不到包的情况。