python+tifffile之tiff文件读写方式
背景
使用python操作一批同样分辨率的图片,合并为tiff格式的文件。
由于opencv主要用于读取单帧的tiff文件,对多帧的文件支持并不好。
通过搜索发现了两个比较有用的包:TiffCapture和tifffile。两者都可用pip安装。
其中前者主要用于读取tiff文件,后者可读可写。最终选择tifffile来合成tiff图片文件。
安装tifffile
pipinstalltifffile
原理及代码
我的图片是8bit灰度图。
每次读取之后,先升维:
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)
下面是我的完整代码:
importcv2 importtifffile importtime importnumpyasnp importtime importos img_path='../word_all' out_txt_path='../out_word_all.box' out_tiff_path='../out_word_all.tif' tiff_list=None withopen(out_txt_path,'wb')asf: dir_list=os.listdir(img_path) cnt_num=0 fordir_nameindir_list: dir_path=os.path.join(img_path,dir_name) img_list=os.listdir(dir_path) pwd=os.getcwd() os.chdir(dir_path) forimginimg_list: print('dir_path:{}'.format(dir_path)) gray_img=cv2.imread(img,cv2.IMREAD_GRAYSCALE) new_gray=gray_img[np.newaxis,::] print('gray_imgshape:{},new_grayshape:{}'.format(gray_img.shape,new_gray.shape)) #globalcnt_num ifcnt_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_listshape:{}'.format(tiff_list.shape)) content='{}226060{}\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_listshape:{}'.format(tiff_list.shape))
以上这篇python+tifffile之tiff文件读写方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。