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获取文件扩展名的方法
Jul 06 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
Jul 23 Python
python安装与使用redis的方法
Apr 19 Python
Python实现的三层BP神经网络算法示例
Feb 07 Python
Python实现按中文排序的方法示例
Apr 25 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
Django中的ajax请求
Oct 19 Python
解决python字典对值(值为列表)赋值出现重复的问题
Jan 20 Python
详解python实现数据归一化处理的方式:(0,1)标准化
Jul 17 Python
Python 私有化操作实例分析
Nov 21 Python
Python网页解析器使用实例详解
May 30 Python
python如何获取网络数据
Apr 11 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为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
php计算两个日期相差天数的方法
2015/03/14 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
2019/10/12 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
2016/05/09 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
js 自带的sort() 方法全面了解
2016/08/16 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
python分析apache访问日志脚本分享
2015/02/26 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
Python模块的制作方法实例分析
2019/12/21 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
学习委员自我鉴定
2014/01/13 职场文书
粗加工管理制度
2014/02/04 职场文书
军校大学生个人的自我评价
2014/02/17 职场文书
党支部鉴定意见
2015/06/02 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL