h5py文件的创建和读取,数据集的制作也不算很难
程序员文章站
2022-06-15 13:46:54
...
前言
提示:以下内容仅做参考:
本文是针对图片数据集的制作,把图像信息用h5py库来存储。
有错误或者有不足请在评论区指出,我会积极改正,十分感谢。
一、h5py是什么?
h5py存放两类数据,一种是datasets,一种是group。datasets是一种数组类数据,和numpy差不多。group(组),类似字典。
若想要具体了解,请参考官网https://docs.h5py.org/en/latest/index.html
二、创建h5文件
1.引入库
代码如下(示例):
import os
import numpy as np
import cv2
import h5py
2.构建函数
代码如下(示例):
print(data.head())def save_image_to_h5py(path):
img_list = []
label_list = []
dir_counter = 0 #TwoClass里有两个文件夹,有两类,分别为0,1 dir_counter就为了来方便后面label
#如果你的label不是0,1,是其他或者例如cat,dog类,这里 也可以不用它,后面直接用文件名做label
for child_dir in os.listdir(path):
child_path = os.path.join(path,child_dir)
for dir_image in os.listdir(child_path): #遍历二级文件每个图片并append信息进数组
img = cv2.imread(os.path.join(child_path,dir_image))
img_list.append(img)
label_list.append(dir_counter)
dir_counter += 1
img_np = np.array(img_list)
label_np = np.array(label_list)
print('数据集标签顺序:\n',label_np) #这里我打印了label信息,其对应图片信息,前6张为0,后9张为1
#所以标签会是[0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 ]
#'a' ,如果已经有这个名字的h5文件存在将不会打开,目的为了防止误删信息。
#‘w' ,如果有同名文件也能打开,但会覆盖上次的内容。
with h5py.File('datasets/cat_or_not.h5','a') as f:
f.create_dataset('training_cat',data = img_np) #创建两个数据集,分别为training_cat
f.create_dataset('training_label',data = label_np) #和training_label的数组集
f.close()
我在注释中已经写的很详尽了,如果还有懂的我在评论区回复。
三、h5py的读取
with h5py.File('datasets/cat_or_not.h5',"r") as f:
for key in f.keys():
print(f[key],key,f[key].name)
f.close()
直接上代码,这个和c语言读取文件有相似之处。读取的内容可以看下:
总结
h5py的创建和读取都不难,只要稍微一看都能懂,在此附上源码,只要你们稍微花那么点时间看看,很容易懂。https://github.com/Confused-Pig/CreateH5File
以上就是今天要讲的内容,本文仅仅简单介绍了h5py的使用,仅懂它不难,但是要学会用它。在深度学习中很多地方都要用它,用上两次就熟悉了。github里的源码很容易懂,我里面放了几张图片,保存的是他们的像素,你们实在不懂的就去运行一下,结合运行结果来看,就很容易了。