2.3 – Reconhecimento de objetos com Python e OpenCV

No tutorial explicando sobre o reconhecimento de face (LINKAR AQUI) foi explicado sobre o uso do arquivo haar cascade e como fazer o uso dele para fazer o reconhecimento de um rosto.

Em princípio, para detectar qualquer tipo de elemento basta ter o arquivo cascade correspondente e o algoritmo é o mesmo, sofrendo apenas ajustes nos parâmetros para melhor desempenho nas identificações.

Os arquivos utilizados podem ser baixados aqui ou em https://github.com/Itseez/opencv/tree/master/data/haarcascades. No segundo link também é possível encontrar outros arquivos cascade para utilizar, podendo fazer a detecção de olhos com óculos, parte superior e inferior do corpo, corpo inteiro, sorriso, etc.

O código a seguir estende o mostrado no reconhecimento de face adicionando o reconhecimento dos olhos. Para isso foi criado mais um classificador, tendo um para a face e outro para os olhos.

A utilização do método detectMultiScale() e feita com a mesma imagem capturada da webcam, mas com configurações diferentes, sendo deixado o tamanho mínimo e máximo para a detecção dos olhos menor do que a da detecção da face.

Para a face é desenhado um retângulo verde e para os olhos são desenhados retângulos na cor azul.

import cv2

arqCasc1 = 'haarcascade_frontalface_default.xml'
arqCasc2 = 'haarcascade_eye.xml'
faceCascade1 = cv2.CascadeClassifier(arqCasc1) #classificador para o rosto
faceCascade2 = cv2.CascadeClassifier(arqCasc2) #classificador para os olhos

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 = faceCascade1.detectMultiScale(
        imagem,
        minNeighbors=20,
        minSize=(30, 30),
	maxSize=(300,300)
    )

    olhos = faceCascade2.detectMultiScale(
        imagem,
        minNeighbors=20,
        minSize=(10, 10),
	maxSize=(90,90)
    )

    # Desenha um retangulo nas faces e olhos detectados
    for (x, y, w, h) in faces:
        cv2.rectangle(imagem, (x, y), (x+w, y+h), (0, 255, 0), 4)

    for (x, y, w, h) in olhos:
        cv2.rectangle(imagem, (x, y), (x+w, y+h), (255, 0, 0), 2)

    cv2.imshow('Video', imagem) #mostra a imagem captura na janela

    #o trecho seguinte e apenas para parar o codigo 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

 

3 respostas para 2.3 – Reconhecimento de objetos com Python e OpenCV

  1. Bruno disse:

    Como treinar o objeto em python para openCV? Alguma dica ou tutorial?

  2. Janne Kelly disse:

    Como posso reconhecer objetos,exemplo um pneu em uma imagem ?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.