Python使用tifffile库实现多帧TIFF文件合成

小岛来信
小岛来信
发布时间:2026-10-13 | 1人浏览过
原创

本文介绍利用Python的tifffile库解决OpenCV对多帧TIFF支持不足的问题。通过读取8位灰度图像,利用NumPy进行升维处理并追加至数组,最终使用tifffile.imsave一次性保存为多帧TIFF文件,提供完整代码示例。

背景与需求分析

背景

在处理一批分辨率相同的图片时,需要将其合并生成TIFF格式的文件。

OpenCV库主要设计用于读取单帧TIFF文件,对于多帧TIFF文件的支持较为有限。

经过搜索,发现两个较为实用的Python包:TiffCapture和tifffile,两者均可以通过pip进行安装。

TiffCapture主要用于读取TIFF文件,而tifffile则支持读写操作。综合考虑后,最终选择使用tifffile来合成TIFF图片文件。

环境安装

安装tifffile


pip install tifffile

实现原理与代码详解

原理及代码

本例中的图片为8位灰度图。

每次读取图像后,首先进行升维处理:


new_gray = gray_img[np.newaxis, ::]

随后使用np.append将数据添加到数组中。每执行一次append操作,相当于在TIFF文件中增加一帧图片。


tiff_list = np.append(tiff_list, new_gray, axis=0)

所有数据处理完毕后,一次性将结果保存到磁盘。


tifffile.imsave( out_tiff_path, tiff_list )

以下是完整的代码实现:


import cv2
import tifffile
import time
import numpy as np
import time
import os

img_path = '../word_all'
out_txt_path = '../out_word_all.box'
out_tiff_path = '../out_word_all.tif'

tiff_list = None


with open(out_txt_path, 'wb') as f:
  dir_list = os.listdir(img_path)
  cnt_num = 0
  
  for dir_name in dir_list:
    dir_path = os.path.join(img_path, dir_name)
    img_list = os.listdir(dir_path)
    pwd = os.getcwd()
    os.chdir(dir_path)
    
    for img in img_list:
      
      print('dir_path:{}'.format(dir_path))
      gray_img = cv2.imread(img, cv2.IMREAD_GRAYSCALE)
      new_gray = gray_img[np.newaxis, ::]
      print('gray_img shape:{}, new_gray shape:{}'.format(gray_img.shape, new_gray.shape))
      #global cnt_num
      if cnt_num == 0:
        print('cnt_num == 0')
        tiff_list = new_gray
      else:
        print('np.append')
        tiff_list = np.append(tiff_list, new_gray, axis=0)
        print('tiff_list shape:{}'.format(tiff_list.shape))
      
      content = '{} 2 2 60 60 {}\n'.format(dir_name, cnt_num)
      print(content)
      f.write(content.encode('UTF-8'))
      cnt_num += 1
    os.chdir(pwd)

  tifffile.imsave( out_tiff_path, tiff_list )


print('tiff_list shape:{}'.format(tiff_list.shape))

以上关于Python结合tifffile进行TIFF文件读写的内容分享完毕,希望能为读者提供参考,并欢迎大家支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表