-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
61 lines (51 loc) · 1.87 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import numpy as np
import os
import cv2
from train import train_images as tr
from DetectImage import detect_image as detect
import tkinter as tk
def train_recognizer():
"""
Treina o reconhecedor facial LBPH se o arquivo 'trained.yml' não existir.
"""
recognizer = cv2.face.LBPHFaceRecognizer_create()
tr_images = tr()
images, image_id = tr_images.extractImages("./training_set")
image_id = np.array(image_id)
recognizer.train(images, image_id)
recognizer.save('trained.yml')
if not os.path.isfile('trained.yml'):
train_recognizer()
# Inicializa a janela principal do aplicativo tkinter
root = tk.Tk()
root.geometry('300x200')
root.title('FARES')
# Cria um frame dentro da janela principal
frame = tk.Frame(root, bg="#FFF")
frame.place(relwidth=0.8, relheight=0.8, relx=0.1, rely=0.1)
# Inicializa a classe de detecção de imagem com os arquivos de registro e presença
d = detect('Record.xlsx', 'attendence.xlsx')
def mark_entry():
"""
Identifica um aluno, marca sua entrada na planilha de presença e exibe o nome identificado.
"""
p_name = d.identify()
cv2.destroyAllWindows() # Fecha todas as janelas abertas pelo OpenCV
print(p_name)
d.markEntry(p_name)
def close_entry():
"""
Identifica um aluno, fecha sua entrada na planilha de presença e exibe o nome identificado.
"""
p_name = d.identify()
cv2.destroyAllWindows() # Fecha todas as janelas abertas pelo OpenCV
print(p_name)
d.close_entry(p_name)
# Cria botões para marcar e fechar entradas de presença
mark_entry_button = tk.Button(root, text="Mark Entry", command=mark_entry)
mark_entry_button.place(relx=0.2, rely=0.5)
close_entry_button = tk.Button(root, text="Close Entry", command=close_entry)
close_entry_button.place(relx=0.6, rely=0.5)
# Inicia o loop principal da aplicação tkinter
if __name__ == '__main__':
root.mainloop()