返回列表 发布新帖

OpenLoongData-v1.0 应该如何使用?

289 4
发表于 2025-8-19 08:38:05 | 查看全部 阅读模式
工作需要对青龙构型的机器人进行基于数据集的强化学习训练,我使用"https://www.openloong.org.cn/cn/dataset/RHeB0n" "青龙-倒水" 并且读取了该数据集的"metadata.json"文件,读取出其中关于图像数据为:

    "data_info": {
        "camera_info": {
            "head": {
                "fps": 52.49,
                "name": "head",
                "camera_type": "rgb",
                "data_type": "image/jpg/binary"
            },
            "hand_left": {
                "fps": 52.49,
                "name": "hand_left",
                "camera_type": "rgb",
                "data_type": "image/jpg/binary"
            },
            "hand_right": {
                "fps": 52.49,
                "name": "hand_right",
                "camera_type": "rgb",
                "data_type": "image/jpg/binary"
            }
        },

但是读取h5文件的字典中只获取到了"cameras/head/color/data" "cameras/hand_left/color/data" "cameras/hand_left/color/data" 三个字段,并且里面的数据为(1408,1)的数组,我不清楚这个有什么含义,也找不到如何使用这个数据集的示例代码,希望数据库管理员可以进行解答

评论4

用户c6ecd695a5d0Lv.1 发表于 2025-9-1 19:25:14 | 查看全部
import h5py
from PIL import Image
import io
import numpy as np

def inspect_h5_file(file_path):
    def explore(name, obj):
        print(f"{'Group' if isinstance(obj, h5py.Group) else 'Dataset'}: {name}")
        if isinstance(obj, h5py.Dataset):
            print(f"  Shape: {obj.shape}")
            print(f"  Dtype: {obj.dtype}")
            print(f"  Compression: {obj.compression}")
        if obj.attrs:
            print("  Attributes:")
            for key, value in obj.attrs.items():
                print(f"    {key}: {value}")

    try:
        with h5py.File(file_path, 'r') as h5file:
            print(f"\n📂 Inspecting HDF5 file: {file_path}\n")
            h5file.visititems(explore)
    except Exception as e:
        print(f"❌ Error reading file: {e}")

# 示例用法
if __name__ == "__main__":
    h5_path = ""  # 替换为你的文件路径
    # inspect_h5_file(h5_path)

    with h5py.File(h5_path, "r") as f:
        data = f["cameras/head/color/data"]
        print(f"Total items: {len(data)}\n")
        for i in range(1):  # 查看前5项
            item = data[i][0]  # 注意是二维结构 (1520, 1)
            print(f"Item {i}: {type(item)}")
            import ipdb; ipdb.set_trace()
            print(item)

            # 转换为 bytes
            img_bytes = item.tobytes()

            # 用 PIL 打开
            img = Image.open(io.BytesIO(img_bytes))
            img.save("output.jpg")

用户c6ecd695a5d0Lv.1 发表于 2025-9-1 19:26:32 | 查看全部
用户c6ecd695a5d0 发表于 2025-9-1 19:25
import h5py
from PIL import Image
import io

我也是用户,不是管理员,刚刚看到img也有点懵,第一次见这种存储方式
查了资料后发现存储形式是JPEG 图像的原始字节流,只是它被存储为一个 uint8 数组而不是 bytes 类型,只需要把它转换成 bytes,然后用图像库打开就行了
许凯Lv.9 发表于 2025-9-23 12:08:35 | 查看全部
用户c6ecd695a5d0 发表于 2025-9-1 19:26
我也是用户,不是管理员,刚刚看到img也有点懵,第一次见这种存储方式
查了资料后发现存储形式是JPEG 图 ...

感谢,使我们清洗数据的疏忽,后续开源数据会修正为bytes
VitaLv.9 发表于 2025-9-29 10:10:55 | 查看全部
许凯 发表于 2025-9-23 12:08
感谢,使我们清洗数据的疏忽,后续开源数据会修正为bytes

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2025 OPENLOONG. All Rights Reserved. Powered by Discuz!
  • 关注B站
  • 关注抖音
  • 关注微信公众号
Copyright © 2025 开发者论坛 - OpenLoong 版权所有 All Rights Reserved.
关灯 在本版发帖 返回顶部
快速回复 返回顶部 返回列表