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 简单的绘图工具turtle使用详解
Jun 21 Python
Python简单定义与使用字典dict的方法示例
Jul 25 Python
解析Python中的eval()、exec()及其相关函数
Dec 20 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
Python enumerate函数功能与用法示例
Mar 01 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
django最快程序开发流程详解
Jul 19 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 Python
python中hasattr()、getattr()、setattr()函数的使用
Aug 16 Python
Python私有属性私有方法应用实例解析
Sep 15 Python
selenium与xpath之获取指定位置的元素的实现
Jan 26 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
DC四月将推出百页特刊漫画 纪念小丑诞生80周年
2020/04/09 欧美动漫
我的论坛源代码(十)
2006/10/09 PHP
如何使用php判断所处服务器操作系统的类型
2013/06/20 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
destoon二次开发入门示例
2014/06/20 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
Yii框架连接mongodb数据库的代码
2016/07/27 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
javascript 多浏览器 事件大全
2010/03/23 Javascript
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
网络之美 JavaScript中Get和Set访问器的实现代码
2010/09/19 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
微信小程序实现带刻度尺滑块功能
2017/03/29 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
在Python中处理XML的教程
2015/04/29 Python
python 不以科学计数法输出的方法
2018/07/16 Python
如何用Python做一个微信机器人自动拉群
2019/07/03 Python
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
巴西世界杯32强口号
2014/06/05 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
卫生保健工作总结2015
2015/05/18 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
python编写函数注意事项总结
2021/03/29 Python
Oracle 数据仓库ETL技术之多表插入语句的示例详解
2021/04/12 Oracle