简而言之,我想将 ImageTk.PhotoImage 对象转换为 Image (PIL) 对象或 numpy 数组。知道您可以使用 numpy.asarray() 将 Image (PIL) 对象转换为 numpy 数组。我得到了一个 numpy 数组,可以在 Tkinter 中显示它,例如:
from Tkinter import *
import numpy as np
import Image, ImageTk
def callback(event):
# do some stuff with a numpy array
# ideally, e.g.:
x=event.x; y=event.y
val=np.asarray(imgTk)[x,y]
print val
arr=np.ones([256,256])
img=Image.fromarray(arr)
imgTk=ImageTk.PhotoImage(img)
t=Tk()
l=Label(t)
l.configure(image=imgTk)
l.bind('<Motion>', callback)
l.pack()
t.mainloop()
但那部分
np.asarray(imgTk)
没有像我预期的那样返回 [256,256] 数组。可能有一种更简单的方法来解决这个问题(如您所见,当我将光标移到它上面时,我正在尝试打印出 2D numpy 数组或“图像”的像素值)。也许我什至可以使用 ImageTk 在 Tkinter 中显示一个 numpy 数组或 Image (PIL) 对象,但我似乎也找不到答案。任何建议表示赞赏。谢谢!