【使用python读取tif文件】python读取tif文件常用的7种方法你知道多少?不同场合应该用什么方法?来看看吧?附代码。

【使用python读取tif文件】python读取tif文件常用的7种方法你知道多少?不同场合应该用什么方法?来看看吧?附代码。

【使用python读取tif文件】python读取tif文件常用的7种方法你知道多少?不同场合应该用什么方法?来看看吧?附代码。


文章目录

  • 【使用python读取tif文件】python读取tif文件常用的7种方法你知道多少?不同场合应该用什么方法?来看看吧?附代码。
  • 前言
  • 1. 使用 rasterio 读取并转为数组
  • 2. 使用 `PIL` (Pillow) 读取并转为数组
  • 3. 使用 `GDAL` 读取并转为数组
  • 4. 使用 `opencv` 读取并转为数组
  • 5. 使用 `matplotlib` 读取并转为数组
  • 6. 使用 `fiona` 与 `rasterio` 结合读取栅格数据
  • 7. 使用 `numpy` 读取 .tif 文件(转换为 NumPy 数组)
  • 总结
  • 第二届人工智能、系统与网络安全国际学术会议 (AISNS 2024)
  • 第二届人工智能与自动化控制国际学术会议(AIAC 2024)
  • 第四届信号处理与通信技术国际学术会议(SPCT 2024)
  • 2024年智能通信、感知与电磁学术会议(ICSE 2024)
  • 第五届神经网络、信息与通信工程国际学术会议(NNICE 2025)
  • 第五届生物信息学与智能计算国际学术研讨会(BIC 2025)

  • 欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
    祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!

    大多数高校硕博生毕业要求需要参加学术会议,发表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 读取并转为数组

    matplotlibimread 方法可以读取 .tif 文件,并返回一个 NumPy 数组。

    import matplotlib.image as mpimg
    
    # 读取 .tif 文件
    img = mpimg.imread('path_to_file.tif')
    
    # 输出图像形状
    print(img.shape)
    
  • mpimg.imread():读取 .tif 文件并返回一个 NumPy 数组。
  • 6. 使用 fionarasterio 结合读取栅格数据

    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)

  • 【ACM独立出版,最快3个月检索 | 往届已实现EI检索】
  • 大会时间:2024年12月20-22日
  • 大会地点:中国 · 湘潭
  • 大会官网:www.aisns.org
  • 第二届人工智能与自动化控制国际学术会议(AIAC 2024)

  • 时间地点:2024年12月20-22日 中国-广州
  • IEEE独立出版,EI快稳检索,广东工业大学主办,往届已EI&Scopus双检索
  • 会议官网:http://www.icaiac.org/
  • 第四届信号处理与通信技术国际学术会议(SPCT 2024)

  • 时间地点:2024年12月27-29日,中国·深圳·香港中文大学(深圳校区)
  • 香港中文大学(深圳)主办
  • 设置优秀评选,ACM独立出版,EI Compendex、Scopus检索
  • 会议官网:www.icspct.com
  • 2024年智能通信、感知与电磁学术会议(ICSE 2024)

  • 2024年12月27-29日 中国-广州
  • 24年年度最后一个电磁、感知类IEEE学术会议!!!
  • 中山大学主办,IEEE出版,学生投稿优惠400
  • 会议官网:www.icicse.net
  • 第五届神经网络、信息与通信工程国际学术会议(NNICE 2025)

  • 大会官网:www.icnnice.com
  • 大会时间:2025年1月10-12日
  • IEEE独立出版,往届均已见刊检索
  • IEEE出版|广东工业大学主办|往届均已见刊检索
  • 第五届生物信息学与智能计算国际学术研讨会(BIC 2025)

  • 2025年1月10-12日 中国·沈阳
  • https://www.ic-bic.net
  • EI、SCOPUSACM出版 | 往届均已见刊检索
  • 辽宁大学主办 | 检索稳定
  • 作者:985小水博一枚呀

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【使用python读取tif文件】python读取tif文件常用的7种方法你知道多少?不同场合应该用什么方法?来看看吧?附代码。

    发表回复