【问题标题】:AttributeError: 'PhotoImage' object has no attribute 'shape'AttributeError:“PhotoImage”对象没有属性“形状”
【发布时间】:2021-09-05 09:58:22
【问题描述】:

我目前正在尝试在 tkinter 中显示图像并使用 mediapipe 识别其主体。为此,我使用 Opencv、mediapipe 和 tkinter。我也为此实现了一些东西,但不幸的是我没有得到任何结果。

【问题讨论】:

    标签: python opencv tkinter


    【解决方案1】:

    mpDraw.draw_landmarks 的第一个参数的类型应该是 NumPy 数组,但你传递的是 PhotoImage 类型的对象。

    您可以将landmarks(photo, results) 替换为:

    landmarks(image, results)
    

    以下代码:

    photo = ImageTk.PhotoImage(image=Image.fromarray(image))
    landmarks(photo, results)
    

    image 从 NumPy 数组转换为 PhotoImage 对象,并将对象作为参数传递给 landmarks 方法(将其传递给 mpDraw.draw_landmarks)。


    看看报错信息:

    如果 image.shape[2] != RGB_CHANNELS:
    AttributeError: 'PhotoImage' 对象没有属性 'shape'

    这意味着image 类型是'PhotoImage'
    这也意味着image 必须具有'shape' 属性,并且我们通过一些经验知道NumPy 数组具有'shape' 属性。

    你也可以看看drawing_utils.py

    参数:
    image:表示为 numpy ndarray 的三通道 RGB 图像。


    注意:

    • 很难判断是否还有其他错误(很难按照代码进行操作)。
      我的答案只针对发布的错误消息。

    【讨论】:

    • 谢谢。我已将其更改为landmarks(image, results)。那是我的错误。我真的没有考虑。正如我所看到的,我需要以下错误消息:if image.shape[2] != RGB_CHANNELS: AttributeError: 'PhotoImage' object has no attribute 'shape',输入图像必须包含三通道 rgb 数据。所以我问自己如何将 PhotoImage 转换为三个 rgb 数据?有可能吗?
    猜你喜欢
    • 1970-01-01
    • 2023-02-02
    • 2016-05-09
    • 2015-05-07
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多