python读取tiff文件进行波段计算_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 {}
".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读取tiff文件进行波段计算_python+tifffile之tiff文件读写方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java dispatchevent_j
- 下一篇: windows c语言 http htt