[英]Tkinter image display (with [converted] NumPy array)
簡而言之,我想將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)對象,但我似乎無法找到答案。 任何建議贊賞。 謝謝!
從ImageTk實例獲取像素數據是非常低效的,並且您無法將ImageTk實例轉換回PIL圖像,但您可以簡單地從原始PIL圖像獲取數據,甚至可以使用您的坐標獲取數據。
代替:
val=np.asarray(imgTk)[x,y]
使用:
val=img.getpixel((x, y))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.