我是HDF5文件格式的新手,我有一个以HDF5格式保存的数据(图像)。这些图像保存在一个名为“data”的组中,该组位于根组之下作为Carrays。我想要做的是回顾一片保存的图像。例如前400或类似的东西。以下是我的所作所为。
h5f = h5py.File('images.h5f', 'r')
image_grp= h5f['/data/'] #the image group (data) is opened
print(image_grp[0:400])
但是我收到以下错误
Traceback (most recent call last):
File "fgf.py", line 32, in <module>
print(image_grp[0:40])
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
(/feedstock_root/build_artefacts/h5py_1496410723014/work/h5py-2.7.0/h5py/_objects.c:2846)
File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
(/feedstock_root/build_artefacts/h5py_1496410723014/work/h5py
2.7.0/h5py/_objects.c:2804)
File "/..../python2.7/site-packages/h5py/_hl/group.py", line 169, in
__getitem__oid = h5o.open(self.id, self._e(name), lapl=self._lapl)
File "/..../python2.7/site-packages/h5py/_hl/base.py", line 133, in _e name = name.encode('ascii')
AttributeError: 'slice' object has no attribute 'encode'
我不知道为什么我会收到此错误,但我甚至不确定是否可以将保存为单个数据集的图像切片。
答案 0 :(得分:0)
我知道这是一个古老的问题,但这是搜索'slice' object has no attribute 'encode'
时的第一击,它没有解决方案。
发生错误是因为“组”是不具有group
属性的encoding
。您正在寻找dataset
元素。
您需要查找/知道包含dataset
的项目的密钥。
一种建议是列出组中的所有键,然后猜测它是哪一个:
print(list(image_grp.keys()))
这将为您提供组中的密钥。 一个常见的情况是第一个元素是图像,因此您可以执行以下操作:
image_grp= h5f['/data/']
image= image_grp(image_grp.keys[0])
print(image[0:400])
答案 1 :(得分:0)
昨天我遇到了类似的错误,写了一小段代码来获取我想要的 h5py 文件切片。
import h5py
def h5py_slice(h5py_file, begin_index, end_index):
slice_list = []
with h5py.File(h5py_file, 'r') as f:
for i in range(begin_index, end_index):
slice_list.append(f[str(i)][...])
return slice_list
它可以像
一样使用the_desired_slice_list = h5py_slice('images.h5f', 0, 400)