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.

Visits: 190