IP カメラから取得した画像を継続的に表示するアプリケーションを構築しています。画像を取得する方法と、Tkinter を使用して画像を表示する方法も理解しました。しかし、画像を継続的に更新することはできません。Python 2.7 以降を使用。
ここに私がこれまでに持っているコードがあります。
import urllib2, base64
from PIL import Image,ImageTk
import StringIO
import Tkinter
URL = 'http://myurl.cgi'
USERNAME = 'myusername'
PASSWORD = 'mypassword'
def fetch_image(url,username,password):
# this code works fine
request = urllib2.Request(url)
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
request.add_header("Authorization", "Basic %s" % base64string)
result = urllib2.urlopen(request)
imgresp = result.read()
img = Image.open(StringIO.StringIO(imgresp))
return img
root = Tkinter.Tk()
img = fetch_image(URL,USERNAME,PASSWORD)
tkimg = ImageTk.PhotoImage(img)
Tkinter.Label(root,image=tkimg).pack()
root.mainloop()
fetch_image
が繰り返し呼び出され、その出力が Tkinter ウィンドウで更新されるようにするには、コードをどのように編集すればよいですか?
画像の更新をトリガーするためにボタンイベントを使用していないことに注意してください。むしろ、1秒ごとに自動的に更新する必要があります。