Estou criando um programa de reconhecimento, onde a pessoa cadastra as informações e tira uma foto para o reconhecimento facial. Consigo criar quantos usuarios necessarios e todas ela reconhecem certinho cada pessoa, retornando as informações de cada usuario na tela, mas o problema está nas faces não cadastradas. Quando há um usuario cadastrado e uma pessoa não cadastrada coloca o rosto, ele retorna que nenhum usuario foi encontrado, mas quando há mais de um usuario cadastrado e uma pessoa não cadastrada coloca o rosto para o reconhecimento, ela SEMPRE RETORNA O PRIMEIRO USER CADASTRADO. Esse é código abaixo que faz o reconhecimento das faces. from database import * from kivy.app import App from kivy.uix.screenmanager import Screen from kivy.lang import Builder import cv2 import numpy as np import csv from datetime import datetime camera = cv2.VideoCapture(0) detectorFace = cv2.CascadeClassifier("./lib/haarcascade_frontalface_default.xml") reconhecedor = cv2.face.EigenFaceRecognizer_create() reconhecedor.read("./lib/classificadorEigen.yml") largura, altura = 220, 220 font = cv2.FONT_HERSHEY_COMPLEX_SMALL id_t = '' nome_arquivo = 'ponto.xlsx' cabecalho = ('Nome', 'Data') hora = datetime.now() def gerar_arquivo(nome_arquivo, cabecalho, resultado): with open (nome_arquivo, "w", newline = "") as csvfile: dados = csv.writer(csvfile) dados.writerow(cabecalho) for x in resultado: tempo = (x[0], hora, '\n') dados.writerow(tempo) while (True): conectado, imagem = camera.read() imagemCinza = cv2.cvtColor(imagem,cv2.COLOR_BGR2GRAY) facesDetectadas = detectorFace.detectMultiScale(imagemCinza, minNeighbors=20, minSize=(30, 30), maxSize=(400, 400)) for (x,y,l,a) in facesDetectadas: imagemFace = cv2.resize(imagemCinza[y:y+a,x:x+l],(largura,altura)) cv2.rectangle(imagem,(x,y),(x+l,y+a),(0,0,255),2) id,confianca = reconhecedor.predict(imagemFace) print(id) id_t = id cursor.execute("SELECT nome FROM users WHERE id = ?",(int(id),)) resultado = cursor.fetchall() print(resultado) if not resultado: cv2.putText(imagem, "Nenhum user encontrado".strip("(),'"), (x, y + (a + 30)), font, 2, (0, 0, 255)) else: cv2.putText(imagem, str(resultado[0]).strip("(),'"), (x, y + (a + 30)), font, 2, (0, 0, 255)) cv2.imshow("Face",imagem) if cv2.waitKey(1) == ord('q'): gerar_arquivo(nome_arquivo, cabecalho, resultado) Builder.load_file('../kv_showresults.kv') # Carrega o arquivo class AnswerInput(Screen): pass class MainApp(App): global result cursor.execute( "SELECT id, nome, telefone, endereco, cidade FROM users WHERE id = ?", (str(id_t))) result = cursor.fetchone() print(result) nome = "Nome: " + result[1] telefone = "Telefone: " + result[2] endereco = "Endereco: " + result[3] cidade = "Cidade: " + result[4] source_ = './treinamento/pessoa.'+str(result[0])+'.1.jpg' def build(self): return AnswerInput() if __name__ == '__main__': MainApp().run() break if cv2.getWindowProperty("Face", cv2.WND_PROP_VISIBLE) < 1: break camera.release() cv2.destroyAllWindows() Continue reading...