|
import sys |
|
import tkinter as tk |
|
from tkinter import messagebox |
|
from PIL import Image, ImageTk |
|
import threading |
|
import cv2 |
|
from anti_spoofing import AntiSpoofingSystem |
|
|
|
class AntiSpoofingGUI: |
|
def __init__(self, anti_spoofing_system): |
|
self.anti_spoofing_system = anti_spoofing_system |
|
self.window = tk.Tk() |
|
self.window.title("Anti-Spoofing System") |
|
|
|
self.student_id_label = tk.Label(self.window, text="Student ID:") |
|
self.student_id_label.pack() |
|
self.student_id_entry = tk.Entry(self.window) |
|
self.student_id_entry.pack() |
|
|
|
self.student_name_label = tk.Label(self.window, text="Student Name:") |
|
self.student_name_label.pack() |
|
self.student_name_entry = tk.Entry(self.window) |
|
self.student_name_entry.pack() |
|
|
|
self.start_button = tk.Button(self.window, text="Start", command=self.start_anti_spoofing) |
|
self.start_button.pack() |
|
|
|
self.image_label = tk.Label(self.window) |
|
self.image_label.pack() |
|
|
|
|
|
self.photo = ImageTk.PhotoImage("RGB", (640, 480)) |
|
|
|
def start_anti_spoofing(self): |
|
self.student_id = self.student_id_entry.get() |
|
self.student_name = self.student_name_entry.get() |
|
|
|
if not self.student_id or not self.student_name: |
|
messagebox.showwarning("Warning", "Please enter both Student ID and Name") |
|
return |
|
|
|
threading.Thread(target=self.run_anti_spoofing, daemon=True).start() |
|
|
|
def run_anti_spoofing(self): |
|
self.anti_spoofing_system.student_id = self.student_id |
|
self.anti_spoofing_system.student_name = self.student_name |
|
self.anti_spoofing_system.run(self.update_frame) |
|
|
|
def update_frame(self, frame): |
|
cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA) |
|
self.photo.paste(Image.fromarray(cv2image)) |
|
self.image_label.config(image=self.photo) |
|
self.image_label.update_idletasks() |
|
|
|
def run(self): |
|
self.window.mainloop() |
|
|
|
if __name__ == "__main__": |
|
anti_spoofing_system = AntiSpoofingSystem() |
|
gui = AntiSpoofingGUI(anti_spoofing_system) |
|
gui.run() |
|
|