Reconhecimento facial em python
Como Executar:
Pré-requisitos
Python 2.x
OpenCV 2.4.x
Para executar, entre com este comando: python facedetection.py
Parâmetros do CascadeClassifier/DetectMultiScale: def detect(img, cascade_fn, scaleFactor, minNeighbors, minSize, flags=cv.CV_HAAR_SCALE_IMAGE): cascade = cv2.CascadeClassifier(cascade_fn) rects = cascade.detectMultiScale(img,scaleFactor=scaleFactor,minNeighbors=minNeighbors, minSize=minSize, flags=flags)
- Scale Factor
Na função detectMultiScale o parâmetro scaleFactor:
Já que durante a fase de treinamento as imagens tem um tamanho fixo, as suas definições para pixels vizinhos são fixas em um certo tamanho/distância. Isso dificultaria a detecção, mas isso é resolvido redimensionando a imagem várias vezes em uma pirâmide (maior para menor = base para topo) para fazer o algoritmo tentar reconhecer diversos tamanhos de face.
No caso, o scaleFactor em 1.05, por exemplo, significa que o step para a diminuição da imagem será de 5%. Com isso, aumentam as chances de se achar uma face no tamanho correto com o da profile do haar treinado.
- Anotações
Quanto menor o step do ScaleFactor, mais demorado o algoritmo. Also, quanto menor o step do ScaleFactor, maior a chance de ocorrência de falsos positivos.
Quanto maior o step do ScaleFactor, mais rápido o algoritmo. Also, quanto maior o step do ScaleFactor, maior a chance de ocorrência de falsos negativos.
- minNeighbors
Na função detectMultiScale o parâmetro minNeighbors:
Este parâmetro indica o número de vizinhos que cada retângulo candidato deve ter para retê-lo.
Diminuir o número de vizinhos significa em uma busca mais refinada, mas aumenta o número de falsos positivos
-------------------------- CODIGO ----------------------
import time import cv2 import cv2.cv as cv #old cv 1.0- functions
def detect(img, cascade_fn, scaleFactor, minNeighbors, minSize, flags=cv.CV_HAAR_SCALE_IMAGE): cascade =