Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Como implementar detecção de rostos no Raspberry Pi

A detecção de rostos é uma tecnologia amplamente utilizada em diversas aplicações, desde sistemas de segurança até interações homem-máquina. No contexto do Raspberry Pi, um dispositivo de baixo custo e alta versatilidade, a detecção de rostos pode ser implementada de forma eficiente utilizando bibliotecas de visão computacional como OpenCV. Este artigo abordará como configurar e executar um sistema básico de detecção de rostos no Raspberry Pi, destacando os ajustes necessários para otimizar o desempenho no ambiente de hardware limitado do Raspberry Pi.

Exemplos:

  1. Instalação do OpenCV: Para começar, é necessário instalar o OpenCV no Raspberry Pi. Isso pode ser feito através dos seguintes comandos no terminal:

    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install python3-opencv
  2. Captura de Imagem da Câmera: Para capturar imagens utilizando a câmera do Raspberry Pi, você pode utilizar a biblioteca picamera. Instale-a com:

    sudo apt-get install python3-picamera

    E utilize o seguinte código para testar a captura de imagem:

    from picamera import PiCamera
    from time import sleep
    
    camera = PiCamera()
    camera.start_preview()
    sleep(5)
    camera.capture('/home/pi/image.jpg')
    camera.stop_preview()
  3. Detecção de Rostos: Com o OpenCV e a câmera configurados, podemos proceder com a detecção de rostos. O código a seguir demonstra como carregar uma imagem e detectar rostos utilizando o classificador Haar Cascade do OpenCV:

    import cv2
    
    # Carregar o classificador Haar Cascade pré-treinado
    face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
    
    # Carregar a imagem
    img = cv2.imread('/home/pi/image.jpg')
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    # Detectar rostos
    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
    
    # Desenhar retângulos ao redor dos rostos detectados
    for (x, y, w, h) in faces:
       cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
    
    # Mostrar a imagem com os rostos detectados
    cv2.imshow('img', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
  4. Execução em Tempo Real: Para fazer a detecção de rostos em tempo real utilizando a câmera do Raspberry Pi, o código a seguir pode ser utilizado:

    import cv2
    from picamera.array import PiRGBArray
    from picamera import PiCamera
    
    # Inicializar a câmera
    camera = PiCamera()
    camera.resolution = (640, 480)
    camera.framerate = 32
    rawCapture = PiRGBArray(camera, size=(640, 480))
    
    # Carregar o classificador Haar Cascade
    face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
    
    # Capturar frames da câmera
    for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
       image = frame.array
       gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
       faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
    
       for (x, y, w, h) in faces:
           cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)
    
       cv2.imshow("Frame", image)
       key = cv2.waitKey(1) & 0xFF
    
       rawCapture.truncate(0)
    
       if key == ord("q"):
           break
    
    cv2.destroyAllWindows()

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.