当我想用PIL.Image保存图片时出错,代码如下:
from PIL import Image
generated = np.load('/home/jovyan/GROUP_SHARED/Kimi.Zhang/cutout.npy')
generated = generated[:25, :, :, :]
print('image_size', generated.shape)
j = Image.fromarray(generated)
for i in range(len(generated)):
j.save('/home/jovyan/GROUP_SHARED/Kimi.Zhang/imagetest_' + str(i) +'.jpg')"generated“包含25张图片,我想将它们逐个保存到jpg中。
结果是:
image_size (25,3,32,32)
KeyError Traceback (most recent call last)
/opt/conda/lib/python3.6/site-packages/PIL/Image.py in fromarray(obj, mode)
2415 typekey = (1, 1) + shape[2:], arr['typestr']
-> 2416 mode, rawmode = _fromarray_typemap[typekey]
2417 except KeyError:
KeyError: ((1, 1, 32, 32), '<f4')
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call last)
<ipython-input-45-00cdf704f05a> in <module>()
5
6
----> 7 j = Image.fromarray(generated)
8 for i in range(len(generated)):
9 j.save('/home/jovyan/GROUP_SHARED/Kimi.Zhang/imagetest_' + str(i)
+ '.jpg')
/opt/conda/lib/python3.6/site-packages/PIL/Image.py in fromarray(obj, mode)
2417 except KeyError:
2418 # print(typekey)
-> 2419 raise TypeError("Cannot handle this data type")
2420 else:
2421 rawmode = mode
TypeError: Cannot handle this data type有人知道怎么解决这个问题吗?非常感谢!
添加:
KeyError Traceback (most recent call last)
/opt/conda/lib/python3.6/site-packages/PIL/Image.py in fromarray(obj, mode)
2415 typekey = (1, 1) + shape[2:], arr['typestr']
-> 2416 mode, rawmode = _fromarray_typemap[typekey]
2417 except KeyError:
KeyError: ((1, 1, 32), '<f4')
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call last)
<ipython-input-47-1316bb4844f6> in <module>()
7 #j = Image.fromarray(generated)
8 for i in range(len(generated)):
----> 9 j = Image.fromarray(generated[i])
10 j.save('/home/jovyan/GROUP_SHARED/Kimi.Zhang/imagetest_' + str(i)
+ '.jpg')
11
/opt/conda/lib/python3.6/site-packages/PIL/Image.py in fromarray(obj, mode)
2417 except KeyError:
2418 # print(typekey)
-> 2419 raise TypeError("Cannot handle this data type")
2420 else:
2421 rawmode = mode
TypeError: Cannot handle this data type发布于 2017-12-31 14:27:49
假设generated中的数据是有效的。
对第一个维度进行迭代,跟踪索引并确保正确保存图像datatype
...
prefix = '\my\path\prefix'
ext = 'jpg'
for suffix, data in enumerate(generated):
print(data.shape)
data.dtype = np.uint8
im = Image.fromarray(data, mode = 'RGB')
print(f'{prefix}_{suffix}.{ext}')
im.save(f'{prefix}_{suffix}.{ext}', 'JPEG')发布于 2017-12-31 12:35:51
试试这个,看看它是否有效。我所做的就是把你的一行代码放在for循环中。
for i in range(len(generated)):
j = Image.fromarray(generated[i])
j.save('/home/jovyan/GROUP_SHARED/Kimi.Zhang/imagetest_' + str(i) +'.jpg')https://stackoverflow.com/questions/48039983
复制相似问题