我是靠谱客的博主 优美水壶,最近开发中收集的这篇文章主要介绍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

最后

以上就是优美水壶为你收集整理的HIF转16位TIF或者PNG的全部内容,希望文章能够帮你解决HIF转16位TIF或者PNG所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部