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中使用Neo4j数据库的教程
Apr 16 Python
Django框架下在视图中使用模版的方法
Jul 16 Python
浅谈Python的Django框架中的缓存控制
Jul 24 Python
Python实现自动添加脚本头信息的示例代码
Sep 02 Python
详解用python写一个抽奖程序
May 10 Python
python基于socket进行端口转发实现后门隐藏的示例
Jul 25 Python
基于python实现文件加密功能
Jan 06 Python
Python递归及尾递归优化操作实例分析
Feb 01 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
May 12 Python
利用django创建一个简易的博客网站的示例
Sep 29 Python
Python爬取梨视频的示例
Jan 29 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 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
php去除HTML标签实例
2013/11/06 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
2016/03/18 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
python实现图书管理系统
2018/03/12 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
如何基于python实现年会抽奖工具
2020/10/20 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
2020/12/04 Python
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
Madda Fella官网:美国冒险家服装品牌
2020/01/16 全球购物
介绍一下SQL Server里面的索引视图
2016/07/31 面试题
大学生简历自我评价2015
2015/03/03 职场文书
自荐信模板大全
2015/03/27 职场文书
大学生活委员竞选稿
2015/11/21 职场文书
民事纠纷协议书
2016/03/23 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python
Python使用openpyxl批量处理数据
2021/06/23 Python
python自动化测试之Selenium详解
2022/03/13 Python