结构解压缩MemoryError

时间:2018-07-24 12:50:42

标签: python python-2.7 numpy struct binary

我正在尝试使用struct unpack将图像二进制文件读入RAM。二进制文件有120MB,每个像素用16位表示。 为了稍后进行演示,我需要将16位数据转换为float64 numpy数组...

根据我的计算,我需要在524MB RAM中读取所有数据。我的PC有8GB的RAM和4GB的免费空间,所以我认为这不是问题。

我在hgrecco的评论中读了Memory error,也许有一个结构解压缩限制。

  • 这是一个额外的问题:那是什么限制?官方文档中没有指定。...

代码如下:

PD:此处将给出总图像大小的nrows和ncols作为默认值 为简单起见,参数:

def read_BIL_img(filename, nrows = 8196, ncols = 8000):

    # Open and read entire BIL data into str type named "data"
    fi = open(filename, "rb")
    data = fi.read()
    fi.close()

    # Unpack all binary data into a flat tuple, accordint to a format defined.
    # It's read unsigned short integer as in https://docs.python.org/2.7/library/struct.html#format-characters.
    format = "=%dH" % (int(nrows*ncols),)
    img_tuple = struct.unpack(format, data)

    # Convert flat tuple img into a numpy array of nrows*ncols.
    img_array = np.asarray(img_tuple).reshape((nrows, ncols))
    return img_array.astype(float)

我遇到以下错误:

 img_tuple = struct.unpack(format, data)
 MemoryError

PD 2:我在Windows 10计算机中使用python 2.7解释器和1.9.2 numpy版本。

0 个答案:

没有答案