背景
使用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之gzip文件读写的方法详解,包括了对Python之gzip文件读写的方法详解的使用技巧和注意事项,需要的朋友参考一下 gzip文件读写的时候需要用到Python的gzip模块。 具体使用如下: 除了open文件的时候和TXT文件有些区别,在用的时候没有其他区别;也可以用with简化程序: 以上这篇对Python之gzip文件读写的方法详解就是小编分享给大家的全部内容了
本文向大家介绍Python读写文件方法总结,包括了Python读写文件方法总结的使用技巧和注意事项,需要的朋友参考一下 本文实例总结了Python读写文件方法。分享给大家供大家参考。具体分析如下: 1.open 使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。 注:不能把open语句放在try块里,因为当打开文件出现异常时
问题内容: 我尝试了以下代码来完成读取和写入tiff图像的任务: 但是,当我运行代码时,出现以下错误消息: 知道如何解决这个问题吗? 问题答案: 读取TIFF并输出BMP的最简单方法是使用ImageIO类: 要使此功能正常工作,您唯一需要做的另一件事是确保已将JAI ImageIO JAR添加到类路径中,因为如果没有此库中的插件,JRE不会处理BMP和TIFF。 如果由于某种原因不能使用JAI I
本文向大家介绍Python读写配置文件的方法,包括了Python读写配置文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python读写配置文件的方法。分享给大家供大家参考。具体分析如下: python 读写配置文件在实际应用中具有十分强大的功能,在实际的操作中也有相当简捷的操作方案,以下的文章就是对python 读写配置文件的具体方案的介绍,相信对大家学习Python有所帮助。
本文向大家介绍Python读写Excel文件方法介绍,包括了Python读写Excel文件方法介绍的使用技巧和注意事项,需要的朋友参考一下 一、读取excel 这里介绍一个不错的包xlrs,可以工作在任何平台。这也就意味着你可以在Linux下读取Excel文件。 首先,打开workbook; 检查表单名字: 得到第一张表单,两种方式:索引和名字 递归打印出每行的信息: 如果只想返回第一列
本文向大家介绍Python读写zip压缩文件的方法,包括了Python读写zip压缩文件的方法的使用技巧和注意事项,需要的朋友参考一下 Python 内置的 zipfile 模块可以对文件(夹)进行ZIP格式的压缩和读取操作。要进行相关操作,首先需要实例化一个 ZipFile 对象。ZipFile 接受一个字符串格式压缩包名称作为它的必选参数,第二个参数为可选参数,表示打开模式,类似于文件操作,有