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 相关文章推荐
CentOS 6.5中安装Python 3.6.2的方法步骤
Dec 03 Python
python使用folium库绘制地图点击框
Sep 21 Python
python 二维数组90度旋转的方法
Jan 28 Python
python实现一个简单的ping工具方法
Jan 31 Python
Django Form 实时从数据库中获取数据的操作方法
Jul 25 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
django2.2安装错误最全的解决方案(小结)
Sep 24 Python
Pytorch GPU显存充足却显示out of memory的解决方式
Jan 13 Python
Django之form组件自动校验数据实现
Jan 14 Python
屏蔽Django admin界面添加按钮的操作
Mar 11 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 Python
能让Python提速超40倍的神器Cython详解
Jun 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
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
基于jquery的商品展示放大镜
2010/08/07 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
在微信小程序中使用vant的方法
2019/06/07 Javascript
layui表格数据重载
2019/07/27 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
详解为什么Vue中的v-if和v-for不建议一起用
2021/01/13 Vue.js
[56:17]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
python判断、获取一张图片主色调的2个实例
2014/04/10 Python
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
基于python进行桶排序与基数排序的总结
2018/05/29 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
python通过链接抓取网站详解
2019/11/20 Python
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
园长自我鉴定
2013/10/06 职场文书
结婚邀请函范文
2014/01/14 职场文书
《童趣》教学反思
2014/02/19 职场文书
幼儿园教师的考核评语
2014/04/18 职场文书
先进典型事迹材料
2014/12/29 职场文书
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL