写numpy ndarray到Image

Coo*_*kie 28 python numpy image python-imaging-library

我正在尝试在Python中读取二进制文件(8位RGB元组),对其进行一些转换然后将其写为png图像.我正在做以下事情:

typeinfo = np.dtype('>i1' ) #read single bytes
data=np.fromfile(("f%05d.txt" %(files[ctr])),dtype=typeinfo)
data=np.reshape(data,[linesperfile,resX,3]) #reshape to size/channels
Run Code Online (Sandbox Code Playgroud)

如果我显示它的类型信息data说:

<type 'numpy.ndarray'>
(512L, 7456L, 3L)
Run Code Online (Sandbox Code Playgroud)

然后我对图像进行一些操作(就地),之后我想将Image写入文件.目前我使用:

import PIL.Image as im
svimg=im.fromarray(data)
svimg.save(("im%05d"%(fileno)),"png")
Run Code Online (Sandbox Code Playgroud)

但它一直给我以下错误:

line 2026, in fromarray
raise TypeError("Cannot handle this data type")
TypeError: Cannot handle this data type
Run Code Online (Sandbox Code Playgroud)

任何想法如何做到这一点?

Ale*_*lli 52

Image需要无符号字节,i1表示有符号字节.如果符号不相关(0到127之间的所有值),那么这将起作用:

svimg=im.fromarray(data.astype('uint8'))
Run Code Online (Sandbox Code Playgroud)

如果您需要0-255的全范围,您应该'uint8'始终使用.