【发布时间】:2012-04-21 00:00:21
【问题描述】:
简而言之,我想将 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) 对象,但我似乎也找不到答案。任何建议表示赞赏。谢谢!
【问题讨论】:
-
你知道如何反其道而行之吗?如如何将 numpy 数组图像更改为 Tk 图像以便我可以使用 Tkinter 显示它?
标签: python tkinter python-imaging-library