O OpenCV (Open Source Computer Vision Library) é uma biblioteca popular para processamento de imagens e visão computacional, incluindo o reconhecimento facial. Neste tutorial, irei mostrar como criar um modelo básico de reconhecimento facial utilizando o OpenCV em Python. Certifique-se de ter o Python e o OpenCV instalados em seu sistema antes de começar.
Passo 1: Instalação do OpenCV
Certifique-se de que você tenha o OpenCV instalado em seu ambiente Python. Se ainda não o tiver instalado, você pode instalá-lo usando o seguinte comando no terminal:
pip install opencv-python
Passo 2: Importar as bibliotecas necessárias
Abra um editor de texto ou ambiente de desenvolvimento Python e crie um novo arquivo. Importe as bibliotecas necessárias no início do arquivo:
import cv2 import os
Passo 3: Preparar o modelo de reconhecimento facial
Para este tutorial, usaremos o algoritmo LBPH (Local Binary Patterns Histograms) para o reconhecimento facial. Esse algoritmo é simples e adequado para fins educacionais.
def preparar_modelo(path_dataset): detector_face = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') reconhecedor = cv2.face.LBPHFaceRecognizer_create() faces_conhecidas = [] IDs = [] for diretorio, subdirs, arquivos in os.walk(path_dataset): for arquivo in arquivos: if arquivo.startswith("."): continue caminho_img = os.path.join(diretorio, arquivo) label = os.path.basename(diretorio) imagem = cv2.imread(caminho_img, cv2.IMREAD_GRAYSCALE) faces = detector_face.detectMultiScale(imagem, scaleFactor=1.1, minNeighbors=5) for (x, y, w, h) in faces: faces_conhecidas.append(imagem[y:y + h, x:x + w]) IDs.append(int(label)) reconhecedor.train(faces_conhecidas, np.array(IDs)) return reconhecedor
Passo 4: Capturar e reconhecer o rosto
Agora, vamos escrever uma função para capturar o rosto usando a webcam e, em seguida, reconhecer o rosto usando o modelo preparado:
def reconhecimento_facial(modelo): camera = cv2.VideoCapture(0) detector_face = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') fonte = cv2.FONT_HERSHEY_SIMPLEX escala_fonte = 1 cor_fonte = (255, 255, 255) while True: ret, imagem = camera.read() imagem_cinza = cv2.cvtColor(imagem, cv2.COLOR_BGR2GRAY) faces = detector_face.detectMultiScale(imagem_cinza, scaleFactor=1.1, minNeighbors=5) for (x, y, w, h) in faces: id_, confianca = modelo.predict(imagem_cinza[y:y + h, x:x + w]) if confianca <= 100: nome = "Pessoa " + str(id_) else: nome = "Desconhecido" cv2.putText(imagem, nome, (x, y + h), fonte, escala_fonte, cor_fonte, 2, cv2.LINE_AA) cv2.rectangle(imagem, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.imshow('Reconhecimento Facial', imagem) if cv2.waitKey(1) & 0xFF == ord('q'): break camera.release() cv2.destroyAllWindows()
Passo 5: Executar o reconhecimento facial
Agora, vamos chamar as funções criadas para preparar o modelo e executar o reconhecimento facial usando a webcam:
if __name__ == '__main__': path_dataset = 'caminho_para_seu_dataset' # Substitua pelo caminho onde suas imagens estão armazenadas modelo = preparar_modelo(path_dataset) reconhecimento_facial(modelo)
Certifique-se de substituir ‘caminho_para_seu_dataset’ pelo caminho real onde suas imagens estão armazenadas. O dataset deve conter subpastas para cada pessoa contendo várias imagens de seus rostos.
Com isso, você terá um modelo simples de reconhecimento facial usando o OpenCV. Lembre-se de que esse é um modelo básico e há muitas outras técnicas e melhorias que você pode adicionar para torná-lo mais robusto em cenários do mundo real.
Views: 734