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 Django做网页
Nov 04 Python
用python实现的线程池实例代码
Jan 06 Python
学生信息管理系统python版
Oct 17 Python
Django之无名分组和有名分组的实现
Apr 16 Python
Python考拉兹猜想输出序列代码实践
Jul 05 Python
Django组件content-type使用方法详解
Jul 19 Python
Django发送邮件和itsdangerous模块的配合使用解析
Aug 10 Python
python nmap实现端口扫描器教程
May 28 Python
Python 矩阵转置的几种方法小结
Dec 02 Python
python3 requests库实现多图片爬取教程
Dec 18 Python
django ajax发送post请求的两种方法
Jan 05 Python
Python django框架开发发布会签到系统(web开发)
Feb 12 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简单封装了一些常用JS操作
2007/02/25 PHP
php在线解压ZIP文件的方法
2014/12/30 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
php把字符串指定字符分割成数组的方法
2018/03/12 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
jquery $.ajax相关用法分享
2012/03/16 Javascript
js的alert弹出框出现乱码解决方案
2013/09/02 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
JS实现针对给定时间的倒计时功能示例
2017/04/11 Javascript
通过说明与示例了解js五种设计模式
2019/06/17 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python 除法小技巧
2008/09/06 Python
Python实现将16进制字符串转化为ascii字符的方法分析
2017/07/21 Python
python创造虚拟环境方法总结
2019/03/04 Python
python调用支付宝支付接口流程
2019/08/15 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
python查看矩阵的行列号以及维数方式
2020/05/22 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
2020/08/07 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
JAVA和C++的区别
2013/10/06 面试题
双拥工作宣传标语
2014/06/26 职场文书
旅游与酒店管理专业求职信
2014/07/21 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
幼儿园辞职信
2015/05/13 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
导游词之天津盘山
2019/11/01 职场文书
Python字符串的转义字符
2022/04/07 Python