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中的多重继承
Apr 28 Python
Python2.x利用commands模块执行Linux shell命令
Mar 11 Python
shelve  用来持久化任意的Python对象实例代码
Oct 12 Python
Python构建XML树结构的方法示例
Jun 30 Python
浅谈python的输入输出,注释,基本数据类型
Apr 02 Python
PyQt4实时显示文本内容GUI的示例
Jun 14 Python
Python3 翻转二叉树的实现
Sep 30 Python
django 模版关闭转义方式
May 14 Python
用60行代码实现Python自动抢微信红包
Feb 04 Python
Python就将所有的英文单词首字母变成大写
Feb 12 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 Python
教你怎么用python实现字符串转日期
May 24 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
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
PHP远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
PHP date_default_timezone_set()设置时区操作实例分析
2020/05/16 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
2011/10/12 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
微信小程序 判断手机号的实现代码
2017/04/19 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
2017/10/26 Javascript
node的process以及child_process模块学习笔记
2018/03/06 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
详解JavaScript的this指向和绑定
2020/09/08 Javascript
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
Python如何省略括号方法详解
2020/03/21 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
水果超市创业计划书
2014/01/27 职场文书
《乌鸦和狐狸》教学反思
2014/02/08 职场文书
演讲稿开场白台词
2014/08/25 职场文书
租赁协议书
2015/01/27 职场文书
初中毕业生自我评价
2015/03/02 职场文书
唐山大地震的观后感
2015/06/05 职场文书
python pyhs2 的安装操作
2021/04/07 Python
Elasticsearch 聚合查询和排序
2022/04/19 Python