Python讀取TIF影像的多種方法
TIFF簡(jiǎn)介
TIFF(Tagged Image File Format)是一種常用的圖像文件格式,廣泛應(yīng)用于各種領(lǐng)域,如醫(yī)學(xué)圖像、衛(wèi)星遙感、地理信息系統(tǒng)等。在Python中,我們可以使用一些庫(kù)來(lái)讀取和處理TIFF文件,這為我們分析和處理這些圖像數(shù)據(jù)提供了便利。
1. 安裝依賴(lài)庫(kù)
在使用Python讀取TIFF文件之前,我們需要安裝一些依賴(lài)庫(kù)。最常用的庫(kù)是PIL(Python Imaging Library),它提供了豐富的圖像處理功能。我們可以使用以下命令來(lái)安裝PIL庫(kù):
pip install Pillow
2. 讀取TIFF文件
使用PIL庫(kù),我們可以通過(guò)Image.open()方法來(lái)讀取TIFF文件。下面是一個(gè)示例代碼:
from PIL import Image
# 讀取TIFF文件
image = Image.open('example.tiff')
# 顯示圖像信息
print(f"圖像格式:{image.format}")
print(f"圖像大小:{image.size}")
print(f"圖像模式:{image.mode}")
from PIL import Image
# 讀取TIFF文件
image = Image.open('example.tiff')
# 顯示圖像信息
print(f"圖像格式:{image.format}")
print(f"圖像大?。簕image.size}")
print(f"圖像模式:{image.mode}")在上面的代碼中,我們首先導(dǎo)入Image模塊,并使用open()方法讀取TIFF文件。然后,我們可以通過(guò)format屬性獲取圖像的格式,通過(guò)size屬性獲取圖像的大小,通過(guò)mode屬性獲取圖像的模式。
Python讀取TIF影像的幾種方法
導(dǎo)入模塊
import numpy as np import tifffile as tf #tifffile是tiff文件的讀取庫(kù) from PIL import Image import cv2 as cv import gdal
TIF文件路徑
path = r'C:/Users/HP/Desktop/tif/jpeg2000/Test_Images/tif/boat4_2100.tif'
方法1:tiffile
img_tf = tf.imread(path) print(img_tf.shape) #(2960, 1976, 3)
方法2:PIL
img = Image.open(path) #可以讀取單通道影像,讀取3通道16位tif影像時(shí)報(bào)錯(cuò)(PIL.UnidentifiedImageError: cannot identify image file),支持4通道8位影像 arr = np.array(img) print(arr.shape)
方法3:opencv
#arr = cv.imread(path,cv.IMREAD_UNCHANGED) #(2960, 1976) arr = cv.imread(path,1) #(2960, 1976, 3) 備注:4波段的影像在opencv的讀取方式中,顯示為前三個(gè)波段,而且讀取順序?yàn)锽GR print(arr.shape)
方法4:gdal方法1
dataset = gdal.Open(path) arr = dataset.ReadAsArray() #(3, 2960, 1976) arr = arr.transpose(1, 2, 0) #(2960, 1976, 3) print(arr.shape)
方法5:gdal方法2
dataset = gdal.Open(path)
bands = dataset.RasterCount
for band in range(1, bands + 1):
# 讀取波段
src_band = dataset.GetRasterBand(band)
# 波段轉(zhuǎn)數(shù)組
band_arr = src_band.ReadAsArray()
if band == 1:
height = band_arr.shape[0]
width = band_arr.shape[1]
arr = np.zeros((height, width, bands), dtype=np.uint8)
arr[:, :, band - 1] = band_arr
print(arr.shape) #(2960, 1976, 3)到此這篇關(guān)于Python讀取TIF影像的幾種方法的文章就介紹到這了,更多相關(guān)Python讀取TIF影像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決PyCharm無(wú)法使用lxml庫(kù)的問(wèn)題(圖解)
這篇文章主要介紹了解決PyCharm無(wú)法使用lxml庫(kù)的問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
Python使用random.shuffle()打亂列表順序的方法
今天小編就為大家分享一篇Python使用random.shuffle()打亂列表順序的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
從原理詳解Python進(jìn)行Base64解碼的實(shí)戰(zhàn)技巧
Base64編碼解碼是處理二進(jìn)制數(shù)據(jù)的常見(jiàn)需求,無(wú)論是處理API響應(yīng),還是數(shù)據(jù)存儲(chǔ),今天我們從實(shí)際應(yīng)用角度出發(fā),深入探討B(tài)ase64解碼的技術(shù)細(xì)節(jié),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-08-08
解決安裝tensorflow遇到無(wú)法卸載numpy 1.8.0rc1的問(wèn)題
今天小編就為大家分享一篇解決安裝tensorflow遇到無(wú)法卸載numpy 1.8.0rc1的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
使用python查找windows系統(tǒng)中所有程序的安裝信息
這篇文章主要為大家介紹了使用python查找windows系統(tǒng)中所有程序的安裝信息示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07

