背景

使用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 osimg_path = '../word_all'
out_txt_path = '../out_word_all.box'
out_tiff_path = '../out_word_all.tif'tiff_list = Nonewith open(out_txt_path, 'wb') as f:dir_list = os.listdir(img_path)cnt_num = 0for 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_numif cnt_num == 0:print('cnt_num == 0')tiff_list = new_grayelse: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 += 1os.chdir(pwd)tifffile.imsave( out_tiff_path, tiff_list )print('tiff_list shape:{}'.format(tiff_list.shape))

参考资料

可以读取tiff文件的工具:https://pypi.org/project/TiffCapture/

可以读写tiff的工具:https://pypi.org/project/tifffile/

How to read a signed 16-bit TIFF in python?

numpy添加新的维度:newaxis

numpy的numpy.delete()/insert()/append()函数

python+tifffile之tiff文件读写相关推荐

  1. python读取tiff文件进行波段计算_python+tifffile之tiff文件读写方式

    背景 使用python操作一批同样分辨率的图片,合并为tiff格式的文件. 由于opencv主要用于读取单帧的tiff文件,对多帧的文件支持并不好. 通过搜索发现了两个比较有用的包:TiffCaptu ...

  2. python读取tiff影像_python+tifffile之tiff文件读写方式

    背景 使用python操作一批同样分辨率的图片,合并为tiff格式的文件. 由于opencv主要用于读取单帧的tiff文件,对多帧的文件支持并不好. 通过搜索发现了两个比较有用的包:TiffCaptu ...

  3. python读取tiff文件_python+tifffile之tiff文件读写方式

    背景 使用python操作一批同样分辨率的图片,合并为tiff格式的文件. 由于opencv主要用于读取单帧的tiff文件,对多帧的文件支持并不好. 通过搜索发现了两个比较有用的包:TiffCaptu ...

  4. 【python图像处理】tiff文件的保存与解析

    tiff文件是一种常用的图像文件格式,支持将多幅图像保存到一个文件中,极大得方便了图像的保存和处理.python中支持tiff文件处理的是libtiff模块中的TIFF类(libtiff下载链接htt ...

  5. Python字符集编码和文件读写

    Python字符集编码和文件读写 python中默认编码是ASCII,可以通过以下方式设置和获取: import sys print sys.getdefaultencoding() sys.setd ...

  6. python特训营-文件读写

    课程目标 Python内置的文件读写操作 通过OS模块进行文件和文件夹操作 通过OS模块进行路径操作 Python内置的文件读写操作 • open() 打开或者创建一个文件 格式:open('文件路径 ...

  7. python json数据的文件读写操作

    python json数据的文件操作 代码 read_write_json.py #!/usr/bin/env python # -*- encoding: utf-8 -*- "" ...

  8. python 获取窗口句柄_Python文件读写最详细的讲解

    本文来自读者投稿,作者:黄同学 今天这篇文章来详细讲解一下Python中的文件读写. 1.文件读写的流程 1)类比windows中手动操作txt文档,说明python中如何操作txt文件? ① win ...

  9. python中io.textio_Python文件读写概述(IO操作、文件读写、stringiobytesio、序列化),python,的,小,总结,StringIOBytesIO...

    IO操作 在进行文件的读写之前,需要说明几点.首先,运行的程序和读取的数据都会在内存中缓存. 进入到 程序或数据 内存 其次,用python程序进行文件的读写,需要创建一个小工具–文件流,用来处理数据 ...

最新文章

  1. Linux中iptraf命令详解(IP局域网监控工具)
  2. 使用 HTML5、CSS3 和 MathML 在 EPUB 3 中制作版式丰富的出版物
  3. matlab参数识别,教程:matlab参数识别(包括微分方程和simulink)
  4. 《HeadFirst Python》第一章学习笔记
  5. 结合图拉普拉斯的半监督学习
  6. php redis 签到,基于Redis位图实现用户签到功能
  7. 因果推断综述及基础方法介绍(一)
  8. visio 2013安装使用
  9. MSN网盘SkyDrive
  10. TL9000 电信业质量体系管理标准
  11. ubuntn 常用命令和快捷键汇总
  12. C语言猜数字游戏及关机程序
  13. 培训班和科班出来的程序员有什么不同之处?看完这个你就能明白!
  14. 策略模式Java实现
  15. Python入门(10)——宝可梦数据集探索
  16. 使用wxjava实现发表内容、预览信息以及推送文章
  17. 基于PL/SQL的数据库备份方法
  18. 加拿大滑铁卢大学计算机世界排名,滑铁卢大学世界排名
  19. 新支点国产服务器操作系统与虚拟化平台和云管理平台实现兼容
  20. Exchange2016将用户头像发布到全局地址列表(GAL)

热门文章

  1. aire 计算机术语,法语计算机及网络词汇(5)
  2. 【小白学数据库】SQL批量模糊查询
  3. TP-Link TL-WR703N路由器刷打印服务,网络配置及补丁加载
  4. Flutter获取屏幕高度宽度,语言环境,触摸收起键盘,back按键
  5. PyInstaller 打包依赖文件至目标程序目录
  6. 【华人学者风采】关美宝 香港中文大学
  7. 知乎大V推荐!面试大厂应该注意哪些问题?面试总结
  8. 洛谷——P4817 [USACO15DEC]Fruit Feast G
  9. 搭建euraka注册中心
  10. navicat使用自定义函数和存储过程