Processamento de Vídeo - Detecção com Haar Cascade
Acesse a versão completa deste relatório em PDF: Abrir em PDF
Este relatório documenta os procedimentos e resultados do Laboratório 7 da disciplina de Processamento de Vídeo, cujo objetivo principal foi implementar técnicas de detecção de objetos e rostos utilizando classificadores Haar Cascade disponíveis na biblioteca OpenCV.
O experimento abordou detecção de rostos e olhos primeiro em imagens estáticas previamente armazenadas e depois em tempo real via webcam. O documento serve como referência técnica para futuras implementações de manipulação de mídias e captura com filtragem baseada em cascatas.
A detecção de objetos por meio de cascatas Haar baseia-se no uso de características visuais simples chamadas Haar-like features, que representam contrastes entre regiões claras e escuras da imagem. Essas características são extraídas rapidamente graças ao uso da imagem integral, uma técnica que permite calcular somas de pixels em regiões retangulares com poucas operações, tornando o método adequado para aplicações em tempo real.
Durante o processo de treinamento, utiliza-se o algoritmo AdaBoost para selecionar as características mais relevantes entre milhares de possibilidades e combinar diversos classificadores fracos em classificadores fortes. Esses classificadores são então organizados em uma estrutura em cascata, onde cada estágio avalia se uma região da imagem pode conter o objeto de interesse.
Bibliotecas como o OpenCV implementam essa técnica de forma otimizada, oferecendo modelos pré-treinados e ferramentas para aplicar a detecção de forma simples, normalmente por meio do carregamento de um classificador em formato XML e da utilização da função detectMultiScale()
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
eyes_cascade = cv2.CascadeClassifier('haarcascade_eye_tree_eyeglasses.xml')
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
for (x,y,w,h) in faces:
roi = gray[y:y+h, x:x+w]
eyes = eyes_cascade.detectMultiScale(roi, 1.1, 5)
# desenho dos retângulos
O que é: Uma distribuição Linux de código aberto.
Finalidade: Fornece o sistema operacional e o ambiente de desenvolvimento onde todas as ferramentas serão instaladas e executadas.
O que é: Interface de linha de comando (CLI).
Finalidade: Utilizado para executar comandos do sistema, gerenciar ambientes, instalar softwares e rodar programas.
O que é: Miniconda é um gerenciador de pacotes e ambientes leve para Python.
Finalidade:
O que é: Biblioteca de Visão Computacional de Código Aberto.
Finalidade: Principal biblioteca usada para tarefas de visão computacional e processamento de imagens/vídeos (detecção de objetos, transformações, extração de características etc.).
Variantes:
Essenciais para compilar e executar o OpenCV a partir do código-fonte:
O que é: Ferramenta auxiliar para configurar flags de compilação e linkagem de bibliotecas.
Finalidade: Verifica se o OpenCV está instalado e acessível (pkg-config --modversion opencv4).
O que sao: Linguagens de programação usadas para rodar os scripts com OpenCV.
Finalidade: Fornece o ambiente de programação para desenvolver tarefas de visão computacional.
O que é: Reprodutor multimídia gratuito e de código aberto.
Finalidade: Permite visualizar vídeos e imagens fora do OpenCV, útil para testes e validação de resultados do processamento de vídeo.
Referências consultadas: documentação oficial (tutorial cascade) e repositório de modelos (haarcascades).
Primeira Parte: Carregamento de imagens dos membros da equipe e aplicação dos classificadores para detecção de rostos e olhos.
Segunda Parte: Adaptação do código para captura via webcam, detecção em tempo real e salvamento de frame ao pressionar tecla.
Parâmetros calibrados: scaleFactor, minNeighbors, e verificação de retornos para robustez.
Para a primeira parte, temos abaixo os resultados obtidos ao rodar o código desenvolvido para a leitura e aplicação do filtro Haar cascade em uma imagem fixa:
Abaixo, temos outro exemplo:
Já para a segunda parte, executamos o programa a fim de capturar uma imagem em tempo real através da webcam e aplicar o filtro instantaneamente. Abaixo, temos o resultado para esta parte:
scaleFactor impacta sensibilidade vs. velocidade.minNeighbors mais alto reduz falsos positivos (especialmente olhos).O laboratório demonstrou a viabilidade de Haar Cascade para detecção rápida de rostos e olhos em imagens e vídeo. A abordagem permanece útil em cenários de baixo recurso.
Lições: verificação de ret, calibração de parâmetros, tratamento de iluminação e liberação de recursos. A base construída permite extensão para detecção de outros objetos ou substituição futura por métodos baseados em CNN.
Aplicações futuras: autenticação básica, contagem de pessoas, apoio a pré-processamento em pipelines modernos.