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影像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
使用django的objects.filter()方法匹配多个关键字的方法
今天小编就为大家分享一篇使用django的objects.filter()方法匹配多个关键字的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-07-07Python3.9环境搭建RobotFramework的详细过程
Robot Framework是一个基于Python的,可扩展的关键字驱动的测试自动化框架,用于端到端验收测试和验收测试驱动开发(ATDD),这篇文章主要介绍了Python3.9环境搭建RobotFramework的详细过程,需要的朋友可以参考下2023-01-01解决出现Incorrect integer value: '''' for column ''id'' at row 1
这篇文章主要介绍了解决出现Incorrect integer value: '' for column 'id' at row 1的问题的相关资料,希望通过本文能帮助到大家,让大家遇到这样的问题及时的解决,需要的朋友可以参考下2017-10-10Python pkg_resources模块动态加载插件实例分析
当编写应用软件时,我们通常希望程序具有一定的扩展性,额外的功能——甚至所有非核心的功能,都能通过插件实现,具有可插拔性。特别是使用 Python 编写的程序,由于语言本身的动态特性,为我们的插件方案提供了很多种实现方式2022-08-08
最新评论