python+tifffile之tiff文件读写方式

作者:yuanlulu 时间:2022-03-16 13:17:41 

背景

使用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 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))

来源:https://blog.csdn.net/yuanlulu/article/details/83279768

标签:python,tifffile,tiff,读写
0
投稿

猜你喜欢

  • Alfred + Gitee搭建免费图床的使用实例详解

    2023-10-04 08:24:30
  • ASP同一站点不同编码程序出现乱码解决办法

    2008-11-10 12:08:00
  • python使用imap-tools模块下载邮件附件的示例

    2023-09-16 08:39:38
  • 基于 Mysql 实现一个简易版搜索引擎

    2024-01-25 02:00:38
  • Python format函数详谈

    2023-12-24 03:57:59
  • Docker安装MySQL8.0的实现方法

    2024-01-23 06:52:06
  • Python函数中apply、map、applymap的区别

    2022-08-11 04:20:36
  • 人生苦短我用python python如何快速入门?

    2021-06-01 03:57:09
  • python列表中remove()函数的使用方法详解

    2021-05-13 22:52:46
  • python实现的一个火车票转让信息采集器

    2023-09-05 11:42:53
  • python list排序的两种方法及实例讲解

    2021-01-14 03:42:20
  • 在Python开发环境中调用ChatGPT模型详细过程

    2022-03-25 21:59:29
  • PHP读取txt文本文件并分页显示的方法

    2023-09-06 21:13:25
  • ASP获取刚插入记录的自动编号ID

    2008-11-17 20:41:00
  • Django实现文件上传和下载功能

    2022-04-02 15:19:34
  • 使用Python自动化破解自定义字体混淆信息的方法实例

    2022-05-24 20:15:34
  • Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法

    2024-04-16 08:48:57
  • 关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题

    2021-11-05 01:05:28
  • 发一个数字拼图网页游戏

    2008-10-12 10:02:00
  • NopCommerce架构分析(一)Autofac依赖注入类生成容器

    2023-07-11 21:20:27
  • asp之家 网络编程 m.aspxhome.com