如何将存储为字符串的图像加载到numpy数组中?

时间:2018-01-24 15:00:12

标签: python image numpy

several examples将图像文件加载到numpy数组中,但我在本地文件系统的文件中没有图像。相反,我有一个字符串变量img,其中包含组成图像的数据。例如:

# Currently here:
with open("imageFile.png") as f:
    img = f.read()

# Would like to accomplish this:
npArray = loadStringToArray(img)

将此文件写回磁盘并调用一个更常见的加载函数似乎不切实际,那么如何将此图像作为字符串“加载”到一个numpy数组中呢?

一些背景知识 - 在我的应用程序中,这个图像作为字符串是通过python套接字从客户端传递的。图像不在本地机器上;上面的例子只是一个例子。在将文件写入本地文件系统并将然后读回来时,可能 如果可以,我想避免这样做。

2 个答案:

答案 0 :(得分:0)

我认为您要做的是将字符串转换为numpy数组,因为您已将图像作为字符串。

您可以使用numpy.fromstring()执行该任务。

示例: -

np.fromstring('\x01\x02', dtype=np.uint8) ----->数组([1,2],dtype = uint8)

np.fromstring('1 2', dtype=int, sep=' ') ----->数组([1,2])

np.fromstring('1, 2', dtype=int, sep=',') ----->数组([1,2])

np.fromstring('\x01\x02\x03\x04\x05', dtype=np.uint8, count=3) ----->数组([1,2,3],dtype = uint8)

答案 1 :(得分:0)

io模块没有详细介绍,提供“类文件”对象,特别是StringIOBytesIO,它们配备内存中的对象,例如带有文件的字符串 - 喜欢界面。许多期望文件参数的函数都会很乐意接受StringIOBytesIO