栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

HIF转16位TIF或者PNG

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/581194.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号