python - 在 HDF5 文件中存储大量 RGB 图像的更有效方式
问题描述
我有几百张大图像(超过100K x 200K
像素)。我将这些图像中的每一个分割成 256 x 256 的补丁,并将它们全部存储在具有以下结构的 HDF5 文件中:
这是我重新创建此 HDF5 结构的代码:
def save_to_hdf5(slide_name, patches, coords, labels, db_name , db_location):
with h5py.File(db_location + f'training{db_name}.h5' ,'a') as hf:
patient_index = "_".join(os.path.basename(slide_name).split('.')[0].split('_')[:2])
slide_index = "_".join(os.path.basename(slide_name).split('.')[0].split('_')[3])
slide_label = labels[os.path.basename(slide_name)]
grp = hf.require_group(patient_index)
subgrp = grp.require_group('wsi_{}'.format(slide_index))
for i, patch in enumerate(patches):
subsubgrp = subgrp.require_group('patch_{}'.format(i))
subsubgrp.create_dataset('image', np.shape(patch), data=patch, compression="gzip", compression_opts=7)#, chunks=True)
subsubgrp.create_dataset('label', np.shape(slide_label), data=slide_label)
subsubgrp.attrs["patch_coords"] = (coords[i][0], coords[i][1])
现在一些大图像的 HDF5 文件的大小甚至比原始图像本身还要大。我想知道我在代码中的组和数据集创建步骤是否有问题?
解决方案
推荐阅读
- python - pySpark Reduce 抛出 Py4JJavaError
- listview - 使用文本框中的按钮在 uwp 中填充列表视图
- spring - 使用 Spring Boot 下载大文件时出现 ClientAbortException
- c# - 将反序列化为接口的对象转换回其原始类型
- python - 在 Python 中计算矩阵的 3 范数
- python - 希望优化网格搜索以获得最佳参数
- python - 如果函数在不应该执行时执行
- c# - 在访问者模式中的节点之间传递数据
- javascript - 在我的代码中,mousemove 属性不起作用并更改了输入类型范围。能解释一下为什么吗?
- python - 使用 python 中的命令打开多个 selenium webdrivers(任务)