如何以HDF5格式存储非常大的三维矩阵?

2024-10-04 03:22:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常大的矩阵,它是一个视频文件作为一个帧数组,每一个大约350x250分辨率。我在一个视频文件中有大约8000-10000个这样的帧,大小约为1-1.5GB。 我发现HDF5是一种很好的文件格式,因为我必须对文件执行许多数学运算(跨越整个深度列)。 我的问题是我无法在HDF5中存储这个3D矩阵。有人能建议我如何以增量的方式存储这些帧(在hdf5文件中逐帧添加)作为hdf5格式的3D矩阵吗? 我使用的是h5python包。在


Tags: 文件格式方式分辨率矩阵数学数组增量
1条回答
网友
1楼 · 发布于 2024-10-04 03:22:57

例如,假设您的视频有10帧,分辨率为200x200像素。因此,您必须创建一个数据类型为uint8(每个RGB组件使用8个无符号位)的尺寸为10 x 200 x 200 x 3的数据集。下面是如何将其传输到h5py api。有关详细信息,请查看docs。在

import h5py
import numpy as np

# create an hdf5 file
with h5py.File("/tmp/videos.h5") as f:
    # create a dataset for your movie
    dst = f.create_dataset("myvideo", shape=(10, 200, 200, 3),
                           dtype=np.uint8)
    # fill the 10 frames with a random image
    for frame in range(10):
        dst[frame] = np.random.randint(255, size=(200, 200, 3))

相关问题 更多 >