TypeError:“图像”对象不能使用 PIL 进行下标

Posted

技术标签:

【中文标题】TypeError:“图像”对象不能使用 PIL 进行下标【英文标题】:TypeError: 'Image' object is not subscriptable using PIL 【发布时间】:2021-04-18 10:17:13 【问题描述】:

我正在尝试在 google colab 上开发一个网络应用程序。我想在这个 Web 应用程序中使用我之前训练过的模型制作一个图像分类器。当我在 Web 应用程序中从浏览器中选择要分类的图像时,出现以下错误:

TypeError: 'Image' object is not subscriptable.

我的代码块:

file = st.file_uploader("Please upload an image(png) file", type=["png"])
def import_and_predict(_image_data, model):
    size = (299,299)
    _image = ImageOps.fit(_image_data , size , Image.ANTIALIAS)
    img = np.asarray(_image)
    img_reshape = _image[np.newaxis,...]
    prediction = model.predict(img_reshape)
    # image = image.convert('RGB')
    # st.image(image, channels='RGB')
    return prediction
if file is None:
    st.text("Please upload an image file !")
else:
    _image = Image.open(file)
    st.image(_image , use_column_width=True)
    prediction = import_and_predict(_image, model)
    class_names=['Cat','Dog']
    string="predict:" +class_names[np.argmax(predictions)]
    st.success(string)

【问题讨论】:

【参考方案1】:

您正在尝试对原始 Image 对象执行整形操作,而您应该在图像数组上执行此操作。更改此行:

img_reshape = _image[np.newaxis,...]

到:

img_reshape = img[np.newaxis,...]

你应该很好。

【讨论】:

以上是关于TypeError:“图像”对象不能使用 PIL 进行下标的主要内容,如果未能解决你的问题,请参考以下文章

PIL TypeError:无法处理此数据类型 - 取决于图像大小

创建图像的缩略图失败,并出现TypeError:'int'对象不可下标

如何从 PIL 图像创建 OpenCV 图像?

如何在 Django 视图中显示 PIL 图像对象?

为啥 Python 不能从 PIL 导入图像?

python-2.7 | SimpleCV - TypeError:'float'对象不能被解释为索引