Python读取TIF影像的多种方法

 更新时间:2023年07月28日 11:42:31   作者:大白曰梦想家  
Python提供了丰富的库来读取和处理TIFF文件,其中PIL库是最常用的,本文给大家介绍Python读取TIF影像的几种方法,需要的朋友可以参考下

TIFF简介

TIFF(Tagged Image File Format)是一种常用的图像文件格式,广泛应用于各种领域,如医学图像、卫星遥感、地理信息系统等。在Python中,我们可以使用一些库来读取和处理TIFF文件,这为我们分析和处理这些图像数据提供了便利。

1. 安装依赖库

在使用Python读取TIFF文件之前,我们需要安装一些依赖库。最常用的库是PIL(Python Imaging Library),它提供了丰富的图像处理功能。我们可以使用以下命令来安装PIL库:

pip install Pillow

2. 读取TIFF文件

使用PIL库,我们可以通过Image.open()方法来读取TIFF文件。下面是一个示例代码:

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}")

在上面的代码中,我们首先导入Image模块,并使用open()方法读取TIFF文件。然后,我们可以通过format属性获取图像的格式,通过size属性获取图像的大小,通过mode属性获取图像的模式。

Python读取TIF影像的几种方法

导入模块

import numpy as np
import tifffile as tf           #tifffile是tiff文件的读取库
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影像时报错(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的读取方式中,显示为前三个波段,而且读取顺序为BGR
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)
    # 波段转数组
    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)

到此这篇关于Python读取TIF影像的几种方法的文章就介绍到这了,更多相关Python读取TIF影像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python urllib2运行过程原理解析

    Python urllib2运行过程原理解析

    这篇文章主要介绍了Python urllib2运行过程原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 详解Python中使用base64模块来处理base64编码的方法

    详解Python中使用base64模块来处理base64编码的方法

    8bit的bytecode经常会被用base64编码格式保存,Python中自带base64模块对base64提供支持,这里我们就来详解Python中使用base64模块来处理base64编码的方法,需要的朋友可以参考下
    2016-07-07
  • Python lambda表达式filter、map、reduce函数用法解析

    Python lambda表达式filter、map、reduce函数用法解析

    这篇文章主要介绍了Python lambda表达式filter、map、reduce函数用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 布同自制Python函数帮助查询小工具

    布同自制Python函数帮助查询小工具

    Python的自带文档功能很不错,给与我耳目一新的感觉。如果在CMD中进行“行式编程”编程的话,可以随时随地的查询函数的功能,非常方便。
    2011-03-03
  • python lazypredict构建大量基本模型简化机器学习

    python lazypredict构建大量基本模型简化机器学习

    这篇文章主要介绍了python lazypredict构建大量基本模型简化机器学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Python数据解析bs4库使用BeautifulSoup方法示例

    Python数据解析bs4库使用BeautifulSoup方法示例

    这篇文章主要为大家介绍了Python数据解析bs4库使用BeautifulSoup方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 关于Python中的空值问题及解决

    关于Python中的空值问题及解决

    这篇文章主要介绍了关于Python中的空值问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Python APScheduler执行使用方法详解

    Python APScheduler执行使用方法详解

    在本篇文章里小编给大家整理的是一篇关于Python APScheduler执行使用方法的相关内容,有兴趣的朋友们可以学习下。
    2020-12-12
  • Python 带星号(* 或 **)的函数参数详解

    Python 带星号(* 或 **)的函数参数详解

    这篇文章主要介绍了Python 带星号(* 或 **)的函数参数详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • python 使用三引号时容易犯的小错误

    python 使用三引号时容易犯的小错误

    这篇文章主要介绍了python 使用三引号时容易犯的小错误,帮助新手学习,避免入坑,感兴趣的朋友可以了解下
    2020-10-10

最新评论