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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)