【使用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小水博一枚呀