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 相关文章推荐
Django 跨域请求处理的示例代码
May 02 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
Sep 04 Python
Python使用Shelve保存对象方法总结
Jan 28 Python
Python中Numpy mat的使用详解
May 24 Python
Python 虚拟空间的使用代码详解
Jun 10 Python
使用Python脚本zabbix自定义key监控oracle连接状态
Aug 28 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 Python
Python2与Python3的区别详解
Feb 09 Python
Python实现区域填充的示例代码
Feb 03 Python
python如何读取.mtx文件
Apr 22 Python
python实现过滤敏感词
May 08 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和ACCESS写聊天室(一)
2006/10/09 PHP
PHP 字符串分割和比较
2009/10/06 PHP
php cli 方式 在crotab中运行解决
2010/02/08 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
PHP类的自动加载机制实现方法分析
2019/01/10 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
[原创]图片分页查看
2006/08/28 Javascript
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
js表数据排序 sort table data
2009/02/18 Javascript
javascript prototype 原型链
2009/03/12 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
2018/09/27 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
python 读写、创建 文件的方法(必看)
2016/09/12 Python
Python数据集切分实例
2018/12/08 Python
python numpy 按行归一化的实例
2019/01/21 Python
Python如何实现转换URL详解
2019/07/02 Python
python 实现多维数组(array)排序
2020/02/28 Python
python微信公众号开发简单流程实现
2020/03/09 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
怎么写自荐书范文
2014/02/12 职场文书
后备干部培训方案
2014/05/22 职场文书
选秀节目策划方案
2014/06/06 职场文书
法院授权委托书范文
2014/08/02 职场文书
公司收款委托书范本
2014/09/20 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python