sexta-feira, 3 de março de 2017

Identificação de faces usando Python e OpenCV

Se você acompanhou o post anterior (sobre a instalação do Python e OpenCV) e instalou a sua versão, então você pode experimentar um simples programa que faz identificação de faces em Python. Segue o código:
import cv2
arqCasc = 'haarcascade_frontalface_default.xml'
faceCascade = cv2.CascadeClassifier(arqCasc)
webcam = cv2.VideoCapture(0)  #instancia o uso da webcam
while True:
    s, imagem = webcam.read() #pega efeticamente a imagem da webcam
    imagem = cv2.flip(imagem,180) #espelha a imagem
    faces = faceCascade.detectMultiScale(
        imagem,
        minNeighbors=5,
        minSize=(30, 30),
maxSize=(200,200)
    )
    # Desenha um retângulo nas faces detectadas
    for (x, y, w, h) in faces:
        cv2.rectangle(imagem, (x, y), (x+w, y+h), (0, 255, 0), 2)
    cv2.imshow('Video', imagem) #mostra a imagem captura na janela
    #o trecho seguinte é apenas para parar o código e fechar a janela
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
webcam.release()         #dispensa o uso da webcam
cv2.destroyAllWindows() #fecha todas a janelas abertas
# ------------------------------------------------------------------------------------

Para este programa funcionar, é necessário acrescentar na mesma pasta o arquivo  "haarcascade_frontalface_default.xml"   que é o arquivo em formato de banco de dados que traz os vetores do Classificador de faces haar cascade.  O link para baixar este arquivo está aqui: Arquivo Classificador haar cascade

O resultado deve ser este da foto a seguir: o programa abre a imagem da sua webcam na tela e vai encontrar seu rosto, desenhando um retângulo em volta.  Veja a foto:
Figura 1- Script que faz a detecção de faces em funcionamento.

Se você desejar detectar outros elementos (que não seja a face humana) como por exemplo: nariz, olhos, pedestres andando na rua, relógio de parede, etc,  você encontra uma coleção de arquivos Classificadores Haar Cascade neste site:  Site com diversos arquivos .xml  com bancos de dados para Classificadores Haar Cascade  para SimpleCV e OpenCV:

Nenhum comentário:

Postar um comentário