【使用python读取tif文件】python读取tif文件常用的7种方法你知道多少?不同场合应该用什么方法?来看看吧?附代码。
【使用python读取tif文件】python读取tif文件常用的7种方法你知道多少?不同场合应该用什么方法?来看看吧?附代码。
【使用python读取tif文件】python读取tif文件常用的7种方法你知道多少?不同场合应该用什么方法?来看看吧?附代码。
文章目录
欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!
大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文:
可访问艾思科蓝官网,浏览即将召开的学术会议列表。会议入口:https://ais.cn/u/mmmiUz
前言
在 Python 中读取 .tif
文件并将其转换为 NumPy 数组,可以通过多种库实现。下面列出了几种常见的读取方法及其示例代码:
1. 使用 rasterio 读取并转为数组
rasterio
是一个专门用于读取栅格数据(如 GeoTIFF 文件)的库,支持直接将栅格数据转换为 NumPy 数组。
import rasterio
# 读取 .tif 文件
with rasterio.open('path_to_file.tif') as src:
img = src.read() # 读取所有波段数据并转换为 NumPy 数组
# 输出图像形状
print(img.shape)
src.read()
:读取所有波段的数据,返回一个 NumPy 数组。每个波段的数据会按顺序存储在数组的第一维。2. 使用 PIL
(Pillow) 读取并转为数组
PIL
(Pillow)是一个常用的图像处理库,可以读取 .tif
文件并将其转换为 NumPy 数组。
from PIL import Image
import numpy as np
# 打开 .tif 文件
img = Image.open('path_to_file.tif')
# 将图像转换为 NumPy 数组
img_array = np.array(img)
# 输出图像形状
print(img_array.shape)
Image.open()
:打开 .tif
文件。np.array(img)
:将 PIL
图像转换为 NumPy 数组。3. 使用 GDAL
读取并转为数组
GDAL
是一个广泛使用的地理空间数据读取库,支持读取 GeoTIFF 文件并将其转换为 NumPy 数组。
from osgeo import gdal
# 打开 .tif 文件
dataset = gdal.Open('path_to_file.tif')
# 读取第一个波段的数据
band = dataset.GetRasterBand(1)
img_array = band.ReadAsArray()
# 输出图像形状
print(img_array.shape)
gdal.Open()
:打开 .tif
文件。dataset.GetRasterBand(1)
:获取第一个波段的数据。band.ReadAsArray()
:将波段数据读取为 NumPy 数组。4. 使用 opencv
读取并转为数组
OpenCV
是一个强大的计算机视觉库,支持读取 .tif
文件并将其转换为 NumPy 数组。
import cv2
# 读取 .tif 文件
img = cv2.imread('path_to_file.tif', cv2.IMREAD_UNCHANGED)
# 输出图像形状
print(img.shape)
cv2.imread()
:读取 .tif
文件,cv2.IMREAD_UNCHANGED
参数确保图像以原始格式加载(包括多波段数据)。5. 使用 matplotlib
读取并转为数组
matplotlib
的 imread
方法可以读取 .tif
文件,并返回一个 NumPy 数组。
import matplotlib.image as mpimg
# 读取 .tif 文件
img = mpimg.imread('path_to_file.tif')
# 输出图像形状
print(img.shape)
mpimg.imread()
:读取 .tif
文件并返回一个 NumPy 数组。6. 使用 fiona
与 rasterio
结合读取栅格数据
fiona
是一个主要用于读取地理空间矢量数据的库,但也可以与 rasterio
配合使用来读取栅格数据。
import fiona
from rasterio import open
# 打开 tif 文件
with open('path_to_file.tif') as src:
img_array = src.read(1) # 读取第一个波段数据
# 输出图像形状
print(img_array.shape)
src.read(1)
:读取第一个波段的数据。7. 使用 numpy
读取 .tif 文件(转换为 NumPy 数组)
虽然 numpy
本身没有直接读取 .tif
文件的功能,但我们可以先通过其他库读取 .tif
文件,然后使用 numpy
进行操作。
import numpy as np
from PIL import Image
# 打开 tif 文件并转换为 NumPy 数组
img = Image.open('path_to_file.tif')
img_array = np.array(img)
# 输出数组形状
print(img_array.shape)
总结
常用的读取 .tif
文件并转为 NumPy 数组的库和方法包括:
rasterio
:适用于读取带有地理参考信息的栅格数据(GeoTIFF),提供对空间数据的良好支持。PIL
(Pillow):适用于普通的 .tif
图像文件,特别是常规图像处理。GDAL
:功能强大,适用于各种栅格数据格式,尤其是需要处理空间信息时。opencv
:适用于计算机视觉任务,支持读取多种图像格式(包括 .tif
)。matplotlib
:适合用于图像可视化的同时,也能读取 .tif
文件。fiona
:与 rasterio
配合使用,适用于栅格数据。这些方法提供了多种方式来读取 .tif
文件并将其转换为 NumPy 数组,适用于不同的应用场景。
第二届人工智能、系统与网络安全国际学术会议 (AISNS 2024)
第二届人工智能与自动化控制国际学术会议(AIAC 2024)
第四届信号处理与通信技术国际学术会议(SPCT 2024)
2024年智能通信、感知与电磁学术会议(ICSE 2024)
第五届神经网络、信息与通信工程国际学术会议(NNICE 2025)
第五届生物信息学与智能计算国际学术研讨会(BIC 2025)
作者:985小水博一枚呀