HIF转16位TIF或者PNG

HIF转16位TIF或者PNG,第1张

HIF转16位TIF或者PNG
import glob
import os
from osgeo import gdal
from skimage import io, img_as_uint, exposure

# HDF文件所在的目录
dir_path = r"/home/"
# 存储的目录
save_path = r"/home/"
# 找到后缀是.HDF的文件,并生成列表
hdf_list = glob.glob(dir_path+'/*.HDF')
# 排序
hdf_list.sort()

for path in hdf_list:
    # 生成tif的路径以及名称 os.path.basename(path)  返回path最后的文件名 
    output_path = os.path.join(save_path, os.path.basename(path).split('_')[9])+'.tif'
    if not os.path.exists(save_path):
        os.makedirs(save_path)
    # 返回一个gdal.Dataset类型
    datasets = gdal.Open(path)
    # 对于hdf类型的文件需要这一步来获取子数据集
    data_ds = datasets.GetSubDatasets()[1][0]
    # 打开hdf中的子数据集
    Raster = gdal.Open(data_ds)
    # 返回numpy数组
    Data = Raster.ReadAsArray()
    print(Data.shape)
    # 将数据整体进行了拉伸 且变成float64类型 
    # 我处理的图片是16uint 但又分布不均匀 所以进行了数据整体的拉伸
    im = exposure.rescale_intensity(Data, out_range='float')
    # 将数据转化为16uint
    im = img_as_uint(im)
    #保存图像
    io.imsave(output_path, im)

  • 安装库

from osgeo import gdal
直接pip install gdal

conda install scikit-image 安装 skimage

  • 测试
from skimage import io
im = io.imread('xxxx')
print(im.type())
  • 存储PNG
    把.tif改为png就行

https://www.jianshu.com/p/03a5e5501879

https://blog.csdn.net/haoji007/article/details/52063252

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5572412.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存