簡體   English   中英

Tkinter圖像顯示(帶[轉換] NumPy數組)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM