【发布时间】:2021-09-05 09:58:22
【问题描述】:
我目前正在尝试在 tkinter 中显示图像并使用 mediapipe 识别其主体。为此,我使用 Opencv、mediapipe 和 tkinter。我也为此实现了一些东西,但不幸的是我没有得到任何结果。
【问题讨论】:
我目前正在尝试在 tkinter 中显示图像并使用 mediapipe 识别其主体。为此,我使用 Opencv、mediapipe 和 tkinter。我也为此实现了一些东西,但不幸的是我没有得到任何结果。
【问题讨论】:
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 数据?有可能吗?