[英]Update label based on facial recognition
我正在 python tkinter 中構建一個程序,該程序將在其上放置一個帶有框架中人員姓名的標簽。 如何獲取要更新的名稱?
我試過 while True 但它沒有用。
import cv2
from time import sleep
import face_recognition as fr
from tkinter import *
def main():
tk = Tk()
cap = cv2.VideoCapture(0)
sleep(1)
while True:
ret, frame = cap.read()
# frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
cv2.imwrite("temp.jpg", frame)
image = fr.load_image_file("temp.jpg")
#img = __draw_label(frame, "Jack", face_locations[0][:2], (255,0,0))
#cv2.imshow("Hello", img)
v = StringVar()
w = Label(tk, textvariable=v)
w.pack()
if len(fr.face_locations(image)) > 0:
face_encoding = fr.face_encodings(image)[0]
faceid = fr.compare_faces(faces, face_encoding)
if True in faceid:
v.set(names[faceid.index(True)])
else:
v.set("Unknown")
else:
v.set("None")
mainloop()
我希望當我看着相機時它應該讀為 Jack 而當我不在時它應該說沒有。 目前,如果我在它開始時開始查看它,它會說 Jack。 如果我不這樣做,它會說不,但它不會更新。 我怎樣才能解決這個問題?
只需使用tk.update()
:
while True:
ret, frame = cap.read()
…
v = StringVar()
w = Label(tk, textvariable=v)
w.pack()
tk.update() #show potential changes on your window
希望有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.