为什么我不能在 PIL 文件上使用 Image.open?

问题描述 投票:0回答:1

我编写了一个简单的代码来从 ccmusic 下载拥抱脸上的音频数据集。问题是,不知怎的,我无法使用 Image.Open() 从所述数据集中打开 PIL 图像...有人可以解释为什么会这样吗?以及如何解决?

如果我运行我的代码:

import datasets
import PIL
from PIL import Image
from datasets import load_dataset

dataset = load_dataset("ccmusic-database/music_genre", split="test")
output = dataset
im = Image.open(output[0])
im.show()

我收到以下错误:

回溯(最近一次调用最后一次): 文件“/Users/abc/Desktop/Project Python Audio/.venv/lib/python3.11/site-packages/PIL/Image.py”,第 3247 行,打开 fp.seek(0) ^^^^^^^ AttributeError:“dict”对象没有属性“seek” 在处理上述异常的过程中,又出现了一个异常: 回溯(最近一次调用最后一次): 文件“/Users/abc/Desktop/Project Python Audio/loading_dataset.py”,第 8 行,位于 im = Image.open(输出[0]) ^^^^^^^^^^^^^^^^^^^^^^^ 文件“/Users/abc/Desktop/Project Python Audio/.venv/lib/python3.11/site-packages/PIL/Image.py”,第 3249 行,打开 fp = io.BytesIO(fp.read()) ^^^^^^^ AttributeError:“dict”对象没有属性“read”

但是,如果我打印文件:

import datasets
import PIL
from PIL import Image
from datasets import load_dataset

dataset = load_dataset("ccmusic-database/music_genre", split="test")
output = dataset
print(output[0])

我得到:

{'图像':,'fst_level_label':1,'sec_level_label':6,'thr_level_label':6,'持续时间':416.0533106575964}

所以看来 PIL / Jpeg 文件数组位于输出 [0] 的正确位置...但是 Image.open 无法显示它...这里发生了什么以及如何观看图像?

python image python-imaging-library jpeg huggingface-datasets
1个回答
0
投票

感谢@slothrop

让代码正常工作(见下文)
import datasets
import PIL
from PIL import Image
from datasets import load_dataset

dataset = load_dataset("ccmusic-database/music_genre", split="test")
output = dataset
im = output[0]['image']
im.show()
© www.soinside.com 2019 - 2024. All rights reserved.