生成数据集

h5py.File打开文件
h5py.create_dataset生成数据集

  1. f = h5py.File('mydatasets2.h5', mode='w')
  2. path = r'D:\\desktop\\壁纸\\*.jpg'
  3. fnames = glob.glob(path)
  4. pics = []
  5. for fname in fnames:
  6. pic = plt.imread(fname)
  7. pic = resize(pic, output_shape=(1080, 1920), preserve_range=True).astype('uint8')
  8. pics.append(pic)
  9. %time f.create_dataset('/pics', data=pics, compression='gzip', compression_opts=9, chunks=True)
  10. f.flush()
  11. f.close()

output:

  1. Wall time: 2.79 s

需要注意的是:

  1. 存储在同一个datasets中的图片大小要一致,这里我把图片都resize到了同一个大小。
  2. 储存的type决定了h5文件的大小,并且这里我使用了压缩。在resize函数中,如果没有将preserve_range置为True,则输出的图片将会是浮点数,导致h5文件会非常大。

计算前后数据量的变化

import os
pic_size=0.
for fname in fnames:
    pic_size+=os.path.getsize(fname)
print('pictures size:{:.3f} MB'.format(pic_size/1024**2))

h5_size=os.path.getsize('mydatasets2.h5')
print('h5 size:{:.3f} MB'.format(h5_size/1024**2))

output:

pictures size:7.579 MB
h5 size:9.691 MB