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