概述

H5文件是层次数据格式第5代的版本(Hierarchical Data Format,HDF5),它是用于存储科学数据的一种文件格式和库文件。由美国超级计算中心与应用中心研发的文件格式,用以存储和组织大规模数据。

h5文件为一个存放数据的容器,包括group名称和datasets,group名称为key,datasets为value,文件结构如下图:

首先读取文件的group值,也即key值,根据key值加载datasets,datasets的文件可为图像、文本、pdf 或其他数据形式。

import h5py as h5

## 获取文件的group(key)值
file = h5.File(file_path, "r")
groups = [key for key in file.keys()]
print(groups)

代码

# 加载.h5图片数据

## import
import os
from PIL import Image
import numpy as np
import h5py as h5 ## functions
def save_image(file, groups):
'''
将.h5/group下的array转换为灰度图像并存储
:param group: .h5文件包中的组名(key值)
:param save_path: 图像存储的路径
:return: None
'''
for group in groups:
print(group + " 组:")
image_path = input("请输入第一组图片要存储的路径(不存储输入N):")
counter = 0
for i in file[group][:]:
if image_path == "N":
continue
else:
makedir(image_path)
save_path = image_path + str(counter) + ".png"
image = np.array(i)
image *= 255 # 变换为0-255的灰度值
image = Image.fromarray(image)
image = image.convert('L') # 灰度为L,彩色为RGB’
image.save(save_path)
print(counter + 1)
counter += 1
print("done!") def makedir(dir_path):
'''
创建文件夹
:param dir_path: 文件夹路径
:return: None
'''
isExists = os.path.exists(dir_path)
if not isExists: # 判断如果文件不存在,则创建
os.makedirs(dir_path) def load_h5(file_path):
'''
加载.h5数据
:param file_path: .h5文件路径
:return: groups, file
'''
file = h5.File(file_path, "r")
groups = [key for key in file.keys()]
print("该文件共有以下几组:", groups)
return groups, file ## main
if __name__ == "__main__":
h5_file = input("输入.h5文件路径:")
groups, file = load_h5(h5_file)
save_image(file, groups)

操作说明

  • 输入.h5文件路径

  • 根据提示输入每组的存储路径 (注意路径最后要加 \ )

  • 无需创建文件夹,输入路径会自动创建

  • 提取的图片如下

.h5图像文件(数据集)的读取并存储 工具贴(二)的更多相关文章

  1. 读取Config文件工具类 PropertiesConfig.java

    package com.util; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io ...

  2. Java读取properties配置文件工具类

    1.   PropertyUtils.java package javax.utils; import java.io.InputStream; import java.util.Properties ...

  3. 客户端相关知识学习(十一)之Android H5交互Webview实现localStorage数据存储

    前言 最近有一个需求是和在app中前端本地存储相关的,所以恶补了一下相关知识 webView开启支持H5 LocalStorage存储 有些时候我们发现写的本地存储没有起作用,那是因为默认WebVie ...

  4. config.json读取和存储

    json格式的配置文件的读取和存储 public class ConfigHelper { public static T GetConfig<T>(string path) { if ( ...

  5. PIE-SDK For C++栅格数据集的读取

    1.功能简介 栅格数据包含很多信息,在数据的运用中需要对数据的信息进行读取,目前PIE SDK支持多种数据格式的数据读取,下面对栅格数据格式的数据读取功能进行介绍. 2.功能实现说明 2.1 实现思路 ...

  6. Pandas_数据读取与存储数据(全面但不精炼)

    Pandas 读取和存储数据 目录 读取 csv数据 读取 txt数据 存储 csv 和 txt 文件 读取和存储 json数据 读取和存储 excel数据 一道练习题 参考 Numpy基础(全) P ...

  7. Pandas_数据读取与存储数据(精炼)

    # 一,读取 CSV 文件: # 文字解析函数: # pd.read_csv() 从文件中加载带分隔符的数据,默认分隔符为逗号 # pd.read_table() 从文件中加载带分隔符的数据,默认分隔 ...

  8. {MySQL存储引擎介绍}一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用

    MySQL存储引擎介绍 MySQL之存储引擎 本节目录 一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用 一 存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是 ...

  9. WCF学习之旅—TcpTrace工具(二十六)

    止文(WCF学习之旅—TcpTrace工具(二十五))介绍了关于TcpTrance的一种使用方式,接下来介绍第二种使用方式. 三.通过ListenUri实现基于tcpTracer的消息路由 对于路由的 ...

随机推荐

  1. [CTF]ROT5/13/18/47编码

    [CTF]ROT5/13/18/47编码 ---------------------  作者:adversity`  来源:CSDN  原文:https://blog.csdn.net/qq_4083 ...

  2. ecloud云主机限速相关配置说明

    目前与云主机限速相关的内容共有三处: neutron qos-xxx命令,通过neutron qos的形式为云主机port绑定相应的网络限速策略(对应弹性公网IP) 通过flavor对云主机进行默认限 ...

  3. 【python】Leetcode每日一题-扰乱字符串

    [python]Leetcode每日一题-扰乱字符串 [题目描述] 使用下面描述的算法可以扰乱字符串 s 得到字符串 t : 如果字符串的长度为 1 ,算法停止 如果字符串的长度 > 1 ,执行 ...

  4. thinkphp之独立日志(tp5.1)

    为了便于分析,File类型的日志还支持设置某些级别的日志信息单独文件记录,以error类型的日志为例,例如: 1.在log.php 中配置 'apart_level' => [ 'error' ...

  5. makefile的include用法

    include 使用方法 : include filename.mk 作用: 暂停当前的makefile执行,去执行指定的makefile,执行完毕后继续执行当前的makefile -include ...

  6. ES6中的箭头函数的语法、指向、不定参数

    箭头函数的语法 function fn1() { console.log(1); } let fn2 = () => { console.log(2); } fn1()//1 fn2()//2 ...

  7. C语言中位运算异或“∧”的作用

    1.概念异或运算符"∧"也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假):异号则为1(真).即 0∧0=0,0∧1=1, 1^0=1,1∧1=0.运算    ...

  8. Java 中布尔(boolean)类型占用多少个字节

    为什么要问这个问题,首先在Java中定义的八种基本数据类型中,除了其它七种类型都有明确的内存占用字节数外,就 boolean 类型没有给出具体的占用字节数,因为对虚拟机来说根本就不存在 boolean ...

  9. EasyUI_使用datagrid分页 (Day_28)

    本次分页涉及技术点 SSM+PageHelper+DatagrId 先来看下效果: 这是无条件分页,下一篇博客我们将讲有条件分页. 无论你是使用js加载table 还是直接使用标签. 使用datagr ...

  10. MongoDB(7)- 文档插入操作

    插入方法 db.collection.insertOne() 插入单条文档到集合中 db.collection.insertMany() 插入多条文档到集合中 db.collection.insert ...