✍51 libtiff 模块的使用
安装模块
- 可以直接使用
pip install libtiff
来进行安装 - 如果失败,则可以去Python库里面下载
**.whl
包来安装 https://www.lfd.uci.edu/~gohlke/pythonlibs/
进入该库搜索pylibtiff
,进行下载- 安装 :
pip install **.whl
注意如果 ``libtiff
还依赖其他的模块才能工作则按照抛出的
Error`继续下载安装即可
模块操作
博客 : http://www.zzvips.com/article/60677.html
1.拆分 tif 图片
from libtiff import TIFF
import os
import cv2
def tif_to_image():
# 打开一个 tif 文件, 指定 r 模式
tif_obj1 = TIFF.open("uhh153_M1_LRM_2_02.tif",mode='r')
for i, image in enumerate(tif_obj1.iter_images()): # 得到的生成器
# 使用 cv2 将拿到的 image 保存成图片
# cv2.imwrite(f"{str(i + 1)}_output.jpg", image) # 路径不能有中文
cv2.imencode(".jpg", image)[1].tofile(fr".\save\{str(i + 1)}_output.jpg") # 可以支持中文路径
2.将一组图片合成 tif 文件
from libtiff import TIFF
from PIL import Image
import os
def image_to_tif():
img_dir = r"./save"
img_list = os.listdir(img_dir)
# 以 w 模式打开一个新 tif 文件准备写入
out_tiff = TIFF.open(r"save-tif.tif", mode='w')
for img_name in img_list:
# 使用 PIL 打开照片成 array 形式
img_array = Image.open(os.path.join(img_dir,img_name))
# 写入到空的 tif 文件中
out_tiff.write_image(img_array, compression=None, write_rgb=True)
# 关闭文件
out_tiff.close()
3.其他操作
- 获取 numpy array
# 获取 tif 目录下的所有图片,以 numpy 数组的形式返回
images = tif_obj1.read_image()
"""
[[104 108 114 ... 130 129 129]
[103 107 114 ... 130 129 128]
[101 107 114 ... 130 129 128]
...
[112 111 107 ... 125 124 124]
[112 111 107 ... 126 125 124]
[112 111 107 ... 126 125 125]]
"""
# tif_obj1.iter_images() 得到的是生成器
# 迭代出来的也是 array 形式
# Image.open("图片路径") 得到的也是 array 的形式
- 练习
from libtiff import TIFF
import os
import cv2
# tif 里有20张图片,只取10张
def tif_to_tif():
tif_obj1 = TIFF.open("uhh153_M1_LRM_2_02.tif",mode='r')
tif_obj2 = TIFF.open("tifffile.tif",mode='w')
[tif_obj2.write_image(image) for i, image in enumerate(tif_obj1.iter_images()) if i < 10]
# count = 0
# for image in tif_obj1.iter_images():
# count +=1
# tif_obj2.write_image(image)
# if count==10:
# break