Python实现读取mat、tif和hdr格式数据

 更新时间:2023年12月15日 14:21:44   作者:静观云起  
遥感影像数据大多以tif格式或者以hdr格式进行存储,如果以mat格式进行存储,不会保留坐标信息,本文将详细介绍如何使用python来读取这三种格式的数据,需要的可以参考下

前言

遥感影像数据大多是以tif格式或者以hdr格式进行存储,并且这两种格式会保存坐标信息;但是以mat格式进行存储,则不会保留坐标信息。下面将详细介绍如何使用python来读取这三种格式的数据

mat格式

利用scipy库读取

import scipy.io as sio

path = r'../01_dataset/data_mat.mat'  #数据路径
data_01 = sio.loadmat(path)['data']   #读取数据

tif格式

利用imageio库读取

import imageio

path = r'../01_dataset/data.tif'  #数据路径  
data_02 = imageio.imread(path).transpose(1,2,0)  #读取数据,并将光谱维放到第三维

利用gdal库读取

from osgeo import gdal

# 定义一个读取tif数据的函数  
def readTif(fileName):  
    dataset = gdal.Open(fileName)  
    if dataset == None:  
        print(fileName+"文件无法打开")  
    return dataset

path = r'../01_dataset/data.tif'  #数据路径 
data_03 = readTif(path)  #读取数据

hdr格式

利用spectral库读取

import spectral
import numpy as np

path = r'../01_dataset/data_hdr.hdr'  #数据路径 
data_04 = spectral.open_image(path)  #读取数据
img = data_04.load()  #加载数据

img = np.array(img)  #一般需要将数据转为数组形式

方法补充

使用PIL库来读取和处理TIF格式数据

1. 安装PIL库

在使用PIL库之前,我们需要先安装它。可以使用pip命令来安装PIL库:

pip install pillow

2. 读取TIF格式数据

在使用PIL库读取TIF格式数据之前,我们首先需要导入相关的库和模块:

from PIL import Image
import numpy as np

接下来,我们可以使用Image.open()函数来打开TIF格式的图像文件,并将其读取为PIL对象:

img = Image.open('example.tif')

这样,我们就成功地将TIF格式的图像文件读取为了PIL对象img。

使用OpenCV读取tiff数据

import cv2
import numpy as np
# 读取tiff文件
im = cv2.imread('example.tiff', cv2.IMREAD_UNCHANGED)
# 显示图像
cv2.imshow('Image', im)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 打印图像尺寸和通道数
print('Image size:', im.shape[:2])
print('Channels:', im.shape[2])

到此这篇关于Python实现读取mat、tif和hdr格式数据的文章就介绍到这了,更多相关Python读取数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 对django后台admin下拉框进行过滤的实例

    对django后台admin下拉框进行过滤的实例

    今天小编就为大家分享一篇对django后台admin下拉框进行过滤的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Pandas数据类型自行变换及数据类型转换失败问题分析与解决

    Pandas数据类型自行变换及数据类型转换失败问题分析与解决

    这篇文章主要介绍了Pandas数据类型自行变换及数据类型转换失败问题分析与解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 使用python实现学生信息管理系统

    使用python实现学生信息管理系统

    这篇文章主要为大家详细介绍了使用python实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • python用pyinstaller封装exe双击后疯狂闪退解决办法

    python用pyinstaller封装exe双击后疯狂闪退解决办法

    本文主要介绍了python用pyinstaller封装exe双击后疯狂闪退解决办法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Python Socket实现简单TCP Server/client功能示例

    Python Socket实现简单TCP Server/client功能示例

    这篇文章主要介绍了Python Socket实现简单TCP Server/client功能,结合实例形式分析了Python基于socket创建TCP服务器Server与客户端client相关实现步骤与操作技巧,需要的朋友可以参考下
    2017-08-08
  • 浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器

    浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器

    这篇文章主要介绍了Python中的可迭代对象、迭代器、For循环工作机制、生成器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Python生成8位随机字符串的方法分析

    Python生成8位随机字符串的方法分析

    这篇文章主要介绍了Python生成8位随机字符串的方法,结合实例形式对比分析了2种比较常用的随机字符串生成技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2017-12-12
  • numpy矩阵乘法中的multiply,matmul和dot的使用

    numpy矩阵乘法中的multiply,matmul和dot的使用

    本文主要介绍了numpy矩阵乘法中的multiply,matmul和dot的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • python中正则表达式?: ?= ?! 的用法

    python中正则表达式?: ?= ?! 的用法

    正则表达式中使用的 ?:、?= 和 ?! 是三种不同的正则表达式语法,它们分别代表非捕获组、正向前瞻断言和负向前瞻断言,下面就来介绍一下这三种的方法,感兴趣的可以了解一下
    2025-04-04
  • Python变量的赋值、浅拷贝和深拷贝详解

    Python变量的赋值、浅拷贝和深拷贝详解

    这篇文章主要介绍了Python变量的赋值、浅拷贝和深拷贝详解,python中为声明一个变量有三种方法:赋值、浅拷贝、深拷贝,相信每个pythoner或多或少都知道他们之间的区别,但在某些点上,还是会踩坑,这篇文章记录下所有关于这三者区别的疑问,需要的朋友可以参考下
    2023-11-11

最新评论