将多个h5文件整合为一个h5文件(10个为例)

为了制作h5数据集,研究了相关的代码,可以将多个h5文件整合成一个文件,本文中涉及的所有h5文件中只有两个key:label(标注图片)和 img(原图),如果有人想参考我的文件代码整合其他的h5文件,可以先了解清楚h5的文件结构。可以看相关的博客:H5文件简介以及python对h5文件的操作-CSDN博客

import os
import numpy as np
import cv2
import h5py
def objFileName(path):
    '''
    生成文件名列表
    :return:
    '''
    local_file_name_list = path
    # 指定名单
    obj_name_list = []
    for i in open(local_file_name_list, 'r'):
        obj_name_list.append(i.replace('\n', ''))
    return obj_name_list

if __name__ == '__main__':
    name_list = objFileName(r'D:\Medical\code\BCP-main\BCP-main\data_split\MyData\test.list')
    h5path = r'D:\Medical\data\VOCdevkit\VOCdevkit\VOC2007\H5'
    # (从2开始时方便我自己命名,你可以从0开始)
    for i in range(2, 48):  # 批量处理,我这里是1980个图片标签,每10张存一个h5文件
        img_list = []
        label_list = []
        for file in name_list[(i - 2) * 10:(i - 1) * 10]:  # 10张存放一个h5文件
            h5f = h5py.File(h5path + "\{}.h5".format(file), 'r')
            image = h5f['image'][:]
            label = h5f['label'][:]
            img_list.append(image)  # 遍历二级文件每个图片并append信息进数组
            label_list.append(label)  # 遍历二级文件每个图片并append信息进数组

        img_np = np.array(img_list)
        label_np = np.array(label_list)
        print(label_np.shape)

        # 'a' ,如果已经有这个名字的h5文件存在将不会打开,目的为了防止误删信息。
        # ‘w' ,如果有同名文件也能打开,但会覆盖上次的内容。
        # for i in range(2, 200):
        filename = 'D:\Medical\data\VOCdevkit\VOCdevkit\VOC2007\\test\\total-test' + str(i - 1) + '.h5'
        with h5py.File(filename, 'w') as f:
            f.create_dataset('image', data=img_np, compression="gzip")  # 创建两个数据集,分别为image
            f.create_dataset('label', data=label_np, compression="gzip")  # 和label的数组集

            f.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值