python+tifffile之tiff文件读写方式
作者:yuanlulu 发布时间:2022-03-16 13:17:41
标签:python,tifffile,tiff,读写
背景
使用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))
来源:https://blog.csdn.net/yuanlulu/article/details/83279768
0
投稿
猜你喜欢
- 登陆页login.asp:<% if request.Form.count>0 then ses
- 昨天在看别人blog的时候发现DW有这么一个东西。叫做代码片断。我们可以将常用的css定义写一个代码片断。保存在DW中,作为公用库。当再次写
- 一、前言 JDK(Java Development Kit )是一切java应用程序的基础,可以说,所有的java应用程序是构建
- 记得以前写过一篇文章 php有效的过滤html标签,js代码,css样式标签: <?php $str = preg_replace(
- 在我们制作主页的过程中,用到表格的地方非常多,灵活运用表格技巧可以为我们的网页增色不少,这里我就详细介
- 这次讨论一下关于select元素的一个问题,其实很早以前我就碰到过关于select元素的问题,这次做网站又被问到同样的问题,就是:一般div
- 我使用“ Web 2.0设计”来形容目前占主导优势的网页设计风格, 很多人用这个词来形容:网络经济的复苏网站和用户之间更高水平的交互或一种社
- Oracle Tips, Tricks & Scripts1. Topic: Compiling Invalid Objects:O
- PyQt的文本操作的继承关系:QTextBrowser ( QtGui.QTextEdit)其中QTextEdit具有的功能函数:copy(
- AJAX应用因为它们的表现力的丰富、更加互动和更加迅速的响应得到了赞扬声;这些优点都是通过使用XMLHttpRequest对象来动态的载入数
- 阅读上一篇:FrontPage2002简明教程四:网页超级链接 一、三种添加CSS的方式 在FrontPage 2002里可以通过三种方式给
- 使用工具:Python2.7 点我下载scrapy框架sublime text3一。搭建python(Windows版本) 1.安
- 一、lambda关键字的使用方法func=lambda x:x+1print(func(1))#2print(func(2))#3#以上la
- 一、回顾一下前面《Oracle开发之窗口函数》中关于全统计一节,我们使用了Oracle提供的:sum(sum(tot_sales)) ove
- 开源监控系统 Prometheus 集成了跟踪多种类型的时间序列数据,但如果没有集成你想要的数据,那么很容易构建一个。一个经常使用的例子使用
- 摘要: 阐述一种全新的ASP模板引擎,实现代码(逻辑)层与HTML(表现)层的分离.这种模板实现方法避免了一般ASP模板加载模板文件(加载组
- ThinkPHP的分组功能是广为开发者使用的一个具有很大实用价值的功能,该功能可以解决中大型项目情况中MVC分层文件过多导致不易管理的问题。
- MySQL出错代码列表:1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库
- 1.having 子句的用法 having 子句对 group by 子句所确定的行组进行控制,having 子句条件中只允许涉及常量,聚组
- 什么是死锁,在Go的协程里面死锁通常就是永久阻塞了,你拿着我的东西,要我先给你然后再给我,我拿着你的东西又让你先给我,不然就不给你。我俩都这