.h5图像文件(数据集)的读取并存储 工具贴(二)
概述
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图像文件(数据集)的读取并存储 工具贴(二)的更多相关文章
- 读取Config文件工具类 PropertiesConfig.java
package com.util; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io ...
- Java读取properties配置文件工具类
1. PropertyUtils.java package javax.utils; import java.io.InputStream; import java.util.Properties ...
- 客户端相关知识学习(十一)之Android H5交互Webview实现localStorage数据存储
前言 最近有一个需求是和在app中前端本地存储相关的,所以恶补了一下相关知识 webView开启支持H5 LocalStorage存储 有些时候我们发现写的本地存储没有起作用,那是因为默认WebVie ...
- config.json读取和存储
json格式的配置文件的读取和存储 public class ConfigHelper { public static T GetConfig<T>(string path) { if ( ...
- PIE-SDK For C++栅格数据集的读取
1.功能简介 栅格数据包含很多信息,在数据的运用中需要对数据的信息进行读取,目前PIE SDK支持多种数据格式的数据读取,下面对栅格数据格式的数据读取功能进行介绍. 2.功能实现说明 2.1 实现思路 ...
- Pandas_数据读取与存储数据(全面但不精炼)
Pandas 读取和存储数据 目录 读取 csv数据 读取 txt数据 存储 csv 和 txt 文件 读取和存储 json数据 读取和存储 excel数据 一道练习题 参考 Numpy基础(全) P ...
- Pandas_数据读取与存储数据(精炼)
# 一,读取 CSV 文件: # 文字解析函数: # pd.read_csv() 从文件中加载带分隔符的数据,默认分隔符为逗号 # pd.read_table() 从文件中加载带分隔符的数据,默认分隔 ...
- {MySQL存储引擎介绍}一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用
MySQL存储引擎介绍 MySQL之存储引擎 本节目录 一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用 一 存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是 ...
- WCF学习之旅—TcpTrace工具(二十六)
止文(WCF学习之旅—TcpTrace工具(二十五))介绍了关于TcpTrance的一种使用方式,接下来介绍第二种使用方式. 三.通过ListenUri实现基于tcpTracer的消息路由 对于路由的 ...
随机推荐
- CVE-2012-3569:VMware OVF Tool 格式化字符串漏洞调试分析
0x01 简介 VMware OVF Tool 是一个命令行实用程序,允许您从许多 VMware 产品导入和导出 OVF 包.在 2.1.0 - 2.1.3 之间的版本中存在格式化字符串漏洞,通过修改 ...
- C#-自动获取IP
//自动获取ip rip是个下拉列表 public void GetIp() { try { string strHostName = Dns.GetHostName(); //得到本机的主机名 IP ...
- dispatcherServlet-servlet.xml(SSM maven 项目)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 【原创】简单解释一下,什么叫TLAB
[Deerhang] TLAB是全程Thread Local Allocation Buffer,中文大致的含义是:线程私有内存分配区.它存在的意义是提高线程在JVM堆上创建对象的效率.那么它是如何做 ...
- 微信小程序支付功能完整流程
支付流程 整个支付流程分为四个步骤: 获取令牌token 创建订单 预支付,获取支付参数对象pay 发起微信支付 收尾工作.跳转到订单页面,删除购物车中已购买的商品 请求方式:POST 整个支付过程中 ...
- 一款好用的数据血缘关系在线工具--SQLFlow
l 数据血缘关系(data lineage) 数据血缘属于数据治理中的一个概念,是在数据溯源的过程中找到相关数据之间的联系,它是一个逻辑概念.数据治理中经常提到血缘分析,血缘分析是保证数据融合的 ...
- 痞子衡嵌入式:在i.MXRT启动头FDCB里使能串行NOR Flash的Continuous read模式
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是在FDCB里使能串行NOR Flash的Continuous read模式. 前面关于串行Flash传输时序的文章 <Fast R ...
- 如何在Mac OS X中开启VIM语法高亮和显示行号
VIM (Wikipedia图) Vim 是一款相当给力的源自UNIX平台的命令行文本编辑器,不过不给力的是,Mac OS X下并没有诸多Linux发行版上VIM那些牛逼哄哄的神马代码高亮显示啊,自动 ...
- Linux_部署Ansible
一.构建Ansible 1.定义清单 清单定义Ansible将要管理的一批主机 这些主机也可以分配到组中,以进行集中管理:组可以包含子组,主机也可以是多个组的成员 清单还可以设置应用到它所定义的主机和 ...
- JFlash ARM对stm32程序的读取和烧录-(转载)
本篇文章主要是记录一下JFlash ARM 的相关使用和操作步骤,读取程序说不上破解,这只是在没有任何加密情况下对Flash的读写罢了!在我们装了JLINK驱动后再根目录下找到JFlash ARM , ...