首页 > 开发 > Python > 正文

python+tifffile之tiff文件读写方式

2020-07-28 13:34:43
字体:
来源:转载
供稿:网友

背景

使用python操作一批同样分辨率的图片,合并为tiff格式的文件。

由于opencv主要用于读取单帧的tiff文件,对多帧的文件支持并不好。

通过搜索发现了两个比较有用的包:TiffCapture和tifffile。两者都可用pip安装。

其中前者主要用于读取tiff文件,后者可读可写。最终选择tifffile来合成tiff图片文件。

安装tifffile

pip install tifffile

原理及代码

我的图片是8 bit灰度图。

每次读取之后,先升维:

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 cv2import tifffileimport timeimport numpy as npimport timeimport osimg_path = '../word_all'out_txt_path = '../out_word_all.box'out_tiff_path = '../out_word_all.tif'tiff_list = Nonewith 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文件读写方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持错新网之家。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表