如何在Python中读取NYUv2数据集mat文件的类别名称为字符串
解决NYUv2数据集
names对象引用转可读字符串问题 NYUv2的nyu_depth_v2_labeled.mat文件中,names变量存储的是HDF5对象引用数组,每个引用指向一个单独的字符串数据集,所以直接读取names只能拿到引用而非实际名称。要转换成Python可读字符串,需要遍历这些引用并解析对应的数据集。
修正后的代码
import numpy as np import h5py mat_path = '/path/to/nyu_depth_v2_labeled.mat' mat_file = h5py.File(mat_path, 'r') # 获取names的对象引用数组,展开为一维 names_refs = mat_file['names'][0] # 遍历引用,解析成字符串列表 category_names = [] for ref in names_refs: # 把引用对应的ASCII整数数组转成字符串 name_str = ''.join(chr(c) for c in mat_file[ref][:]) category_names.append(name_str) # 验证结果 print(f"共获取到 {len(category_names)} 个类别名称") print("前5个类别名称:", category_names[:5])
关键说明
- 原
names的shape是(1, 894),通过[0]提取出一维数组,方便遍历每个引用。 - 每个引用指向的数据集是ASCII码组成的整数数组,需要逐个转成字符后拼接成完整类别名称。
- 最终
category_names就是包含894个类别名称的Python字符串列表。
内容的提问来源于stack exchange,提问作者Leander Heine
相关产品推荐
相关产品推荐

