gpt4 book ai didi

python - h5py,在SVHN中访问Datasets中的数据

转载 作者:太空狗 更新时间:2023-10-30 00:34:38 27 4
gpt4 key购买 nike

我想读the Street View House Numbers (SVHN) Dataset通过使用 h5py

In [117]: def printname(name):
...: print(name)
...:

In [118]: data['/digitStruct'].visit(printname)
bbox
name

数据中有两组,bboxnamename是文件名数据对应的组名,bbox是width、height、top、left和label数据对应的组名。

如何访问namebbox组中的所有数据?

我尝试使用 Docs 中的以下代码, 但它只返回 HDF5 对象引用。

In [119]: for i in data['/digitStruct/name']:
...: print(i[0])
...:
...:
<HDF5 object reference>
<HDF5 object reference>
<HDF5 object reference>
<HDF5 object reference>
<HDF5 object reference>
<HDF5 object reference>

Python 版本:3.5 和操作系统:Windows 10。

最佳答案

我会在这里回答我的问题,阅读h5py的文档后,这是我的代码

def get_box_data(index, hdf5_data):
"""
get `left, top, width, height` of each picture
:param index:
:param hdf5_data:
:return:
"""
meta_data = dict()
meta_data['height'] = []
meta_data['label'] = []
meta_data['left'] = []
meta_data['top'] = []
meta_data['width'] = []

def print_attrs(name, obj):
vals = []
if obj.shape[0] == 1:
vals.append(obj[0][0])
else:
for k in range(obj.shape[0]):
vals.append(int(hdf5_data[obj[k][0]][0][0]))
meta_data[name] = vals

box = hdf5_data['/digitStruct/bbox'][index]
hdf5_data[box[0]].visititems(print_attrs)
return meta_data

def get_name(index, hdf5_data):
name = hdf5_data['/digitStruct/name']
return ''.join([chr(v[0]) for v in hdf5_data[name[index][0]].value])

这里的hdf5_datatrain_data = h5py.File('./train/digitStruct.mat'),它工作正常!

更新

下面是使用上述两个函数的一些示例代码

mat_data = h5py.File(os.path.join(folder, 'digitStruct.mat'))
size = mat_data['/digitStruct/name'].size

for _i in tqdm.tqdm(range(size)):
pic = get_name(_i, mat_data)
box = get_box_data(_i, mat_data)

上面的函数展示了如何获取每条数据的名称和bbox数据!

关于python - h5py,在SVHN中访问Datasets中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41176258/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com