python+tifffile之tiff文件讀寫(xiě)方式
背景
使用python操作一批同樣分辨率的圖片,合并為tiff格式的文件。
由于opencv主要用于讀取單幀的tiff文件,對(duì)多幀的文件支持并不好。
通過(guò)搜索發(fā)現(xiàn)了兩個(gè)比較有用的包:TiffCapture和tifffile。兩者都可用pip安裝。
其中前者主要用于讀取tiff文件,后者可讀可寫(xiě)。最終選擇tifffile來(lái)合成tiff圖片文件。
安裝tifffile
pip install tifffile
原理及代碼
我的圖片是8 bit灰度圖。
每次讀取之后,先升維:
new_gray = gray_img[np.newaxis, ::]
然后再使用np.append添加到數(shù)組里。每append一次,相當(dāng)于tiff增加一幀圖片。
tiff_list = np.append(tiff_list, new_gray, axis=0)
所有操作完畢,則一次性保存到磁盤(pán)。
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文件讀寫(xiě)方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python Numpy實(shí)現(xiàn)修改數(shù)組形狀
NumPy(Numerical Python)是Python中用于處理數(shù)組和矩陣的重要庫(kù),它提供了豐富的功能,用于科學(xué)計(jì)算,本文主要介紹了如何使用NumPy提供的方法來(lái)改變數(shù)組的形狀,感興趣的可以了解下2023-11-11opencv深入淺出了解機(jī)器學(xué)習(xí)和深度學(xué)習(xí)
機(jī)器學(xué)習(xí)是人工智能的核心,專(zhuān)門(mén)研究如何讓計(jì)算機(jī)模擬和學(xué)習(xí)人類(lèi)的行為。?深度學(xué)習(xí)是機(jī)器學(xué)習(xí)中的一個(gè)熱門(mén)研究方向,它主要研究樣本數(shù)據(jù)的內(nèi)在規(guī)律和表示層次,讓計(jì)算機(jī)能夠讓人一樣具有分析與學(xué)習(xí)能力2022-03-03Python將CSV文件轉(zhuǎn)化為HTML文件的操作方法
很多朋友問(wèn)小編Python如何將CSV文件轉(zhuǎn)化為HTML文件,csv文件讀取怎么操作呢?帶著這些問(wèn)題一起通過(guò)本文學(xué)習(xí)吧2021-06-06Python3 ID3決策樹(shù)判斷申請(qǐng)貸款是否成功的實(shí)現(xiàn)代碼
這篇文章主要介紹了Python3 ID3決策樹(shù)判斷申請(qǐng)貸款是否成功的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05jupyter notebook插入本地圖片的實(shí)現(xiàn)
這篇文章主要介紹了jupyter notebook插入本地圖片的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04