python+tifffile之tiff文件读写方式


Posted in Python onJanuary 13, 2020

背景

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

以上这篇python+tifffile之tiff文件读写方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
利用Python的Twisted框架实现webshell密码扫描器的教程
Apr 16 Python
详解Python设计模式编程中观察者模式与策略模式的运用
Mar 02 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
Jun 30 Python
Jupyter notebook远程访问服务器的方法
May 24 Python
使用python进行拆分大文件的方法
Dec 10 Python
python感知机实现代码
Jan 18 Python
浅谈Python爬虫基本套路
Mar 25 Python
pycharm 安装JPype的教程
Aug 08 Python
使用PyTorch训练一个图像分类器实例
Jan 08 Python
解决Python图形界面中设置尺寸的问题
Mar 05 Python
python办公自动化之excel的操作
May 23 Python
python文件与路径操作神器 pathlib
Apr 01 Python
python读取tif图片时保留其16bit的编码格式实例
Jan 13 #Python
手动安装python3.6的操作过程详解
Jan 13 #Python
Python中join()函数多种操作代码实例
Jan 13 #Python
Python使用py2neo操作图数据库neo4j的方法详解
Jan 13 #Python
Python模块_PyLibTiff读取tif文件的实例
Jan 13 #Python
python多线程实现代码(模拟银行服务操作流程)
Jan 13 #Python
Python timeit模块的使用实践
Jan 13 #Python
You might like
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
PHP开发中常用的字符串操作函数
2011/02/08 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
实例:用 JavaScript 来操作字符串(一些字符串函数)
2007/02/15 Javascript
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
如何使用HTML5地理位置定位功能
2015/04/27 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
numpy.std() 计算矩阵标准差的方法
2018/07/11 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
Python中无限循环需要什么条件
2020/05/27 Python
python实现画图工具
2020/08/27 Python
如何进行Linux分区优化
2016/09/13 面试题
旅游项目开发策划书
2014/01/18 职场文书
党员入党表决心的话
2014/03/11 职场文书
劲霸男装广告词
2014/03/21 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
小学数学课题方案
2014/06/15 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
工作简报范文
2015/07/21 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
SQL语法CONSTRAINT约束操作详情
2022/01/18 MySQL
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏