3

我一直在努力使用 ipywidgets.FileUpload() 将图像上传到我的 Jupyter 笔记本中,它适用于文本文件,但对于二进制文件,内容总是损坏。特别是对于图像,它们始终存储为“数据”,因此 keras.preprocessing.image.load_img() 无法使用它们。我正在使用的代码是:

import ipywidgets as widgets

uploader = widgets.FileUpload()
uploader

for name, file_info in uploader.value.items():
    with open(name, 'wb') as fp:
        fp.write(file_info['content'])

我尝试了多种解决方案,但没有任何东西可以处理二进制文件,任何提示或帮助都会受到好评。我的环境是 GCP AI Platform Notebooks(JupyterLabs 1.2.16,ipywidgets 7.5.1),我一直在使用的参考资料是:

4

1 回答 1

3

您可以使用 PIL 或任何其他带有io.BytesIO. 然后,将图像传递给 Keras。例如

import io
from PIL import Image

for name, file_info in uploader.value.items():
    img = Image.open(io.BytesIO(file_info['content']))
    
print(img)

输出:

<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=430x128 at 0x7FBC8AAD9310>
于 2020-06-21T14:24:54.363 回答