Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Construa um Sistema de Rastreamento Facial em Tempo Real com Arduino e OpenCV

Componentes e Materiais

ComponenteQuantidade
Arduino UNO1
Webcam (mini)1
Micro servos (SG90 ou similar)2
Kit Pan-Tilt1
Protoboard1

Aplicativos e Serviços Online

Sobre o Projeto

Em tutoriais anteriores, mostrei comunicação Arduino-Python via pyserial (controle de LED) e detecção de cor com OpenCV. Agora, rastreamento facial: a câmera segue o rosto. Parece difícil, mas não é – basta conhecimento básico de Arduino e Python.

Passo 1: Materiais Necessários

Hardware: Arduino UNO (ou outro), Webcam, 2x Servos (micro ou standard), Protoboard, Kit Pan-Tilt (ou construa um).

Software: Python 2.7, OpenCV (pip install opencv-python), pyserial (pip install serial), numpy (pip install numpy), Haarcascade (XML).

Passo 2: Configurando Ambiente Python

  1. Instale Python 2.7.14. Verifique com python no CMD ou IDLE.
  2. Se erro no CMD, configure variável de ambiente PATH.
  3. Instale módulos via pip:
    > pip install serial
    > pip install opencv-python
    > pip install numpy
    

Passo 3: Script Python (face.py)

Crie pasta, coloque haarcascade_frontalface_default.xml nela. Salve o script abaixo como face.py na mesma pasta.


import numpy as np
import serial
import time
import sys
import cv2

# Porta serial do Arduino (ajuste COM5)
arduino = serial.Serial('COM5', 9600)
time.sleep(2)
print("Conectado ao Arduino...")

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)

while 1:
    ret, img = cap.read()
    cv2.resizeWindow('img', 500, 500)
    # Linhas de referência central
    cv2.line(img, (500, 250), (0, 250), (0, 255, 0), 1)
    cv2.line(img, (250, 0), (250, 500), (0, 255, 0), 1)
    cv2.circle(img, (250, 250), 5, (255, 255, 255), -1)

    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.3)

    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 5)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = img[y:y+h, x:x+w]

        # Centro do retângulo (ROI)
        xx = int(x + (x + w)) / 2
        yy = int(y + (y + h)) / 2
        center = (xx, yy)
        print("Centro do Retangulo:", center)

        # Envia para Arduino: "XxxYyyZ"
        data = "X{0:d}Y{1:d}Z".format(xx, yy)
        print("output = '" + data + "'")
        arduino.write(data.encode())

    cv2.imshow('img', img)
    k = cv2.waitKey(30) & 0xff
    if k == 27: break  # ESC sai

cap.release()
cv2.destroyAllWindows()

Passo 4: Código Arduino (servo.ino)


#include <Servo.h>
Servo servoVer; // Vertical (pino 5)
Servo servoHor; // Horizontal (pino 6)
int x, y, prevX, prevY;

void setup() {
  Serial.begin(9600);
  servoVer.attach(5);
  servoHor.attach(6);
  servoVer.write(90);
  servoHor.write(90);
}

void Pos() {
  if (prevX != x || prevY != y) {
    int servoX = map(x, 600, 0, 70, 179);
    int servoY = map(y, 450, 0, 179, 95);
    servoX = constrain(servoX, 70, 179);
    servoY = constrain(servoY, 95, 179);
    servoHor.write(servoX);
    servoVer.write(servoY);
  }
}

void loop() {
  if (Serial.available() > 0) {
    if (Serial.read() == 'X') {
      x = Serial.parseInt();
      if (Serial.read() == 'Y') {
        y = Serial.parseInt();
        Pos();
      }
    }
    while (Serial.available() > 0) Serial.read(); // limpa buffer
  }
}

Passo 5: Mecanismo Pan-Tilt

Usei kit pronto (barato, fácil montar). Pode fazer em madeira, plástico ou impressão 3D.

Passo 6: Conexões

Passo 7: Testando

  1. Conecte servos, suba sketch, feche IDE (libera porta serial).
  2. Execute face.py no IDLE (F5).
  3. Aguarde conexão, janela da webcam abre, detecta rosto e servos rastreiam.
  4. Fixe a webcam no pan-tilt para mover junto.

Arquivos Adicionais

Processo de manufatura

  1. Construa um Sensor de Temperatura Remoto com Raspberry Pi e Python – Guia Passo a Passo
  2. Reconhecimento Facial em Tempo Real no Raspberry Pi – Guia Completo
  3. Rastreamento Automatizado de Objetos Baseado em Visão com Raspberry Pi e OpenCV
  4. Construa um Decodificador DTMF Usando Apenas um Arduino – Sem CIs Externos
  5. Crie um Sistema Ambilight Impressionante para Monitor com Arduino
  6. Sistema de Presença RFID Confiável com Arduino e Python
  7. Construa um Dispositivo de Levitação Ultrassônica com Arduino – Guia Passo a Passo
  8. Construa um Voltímetro Inteligente com Arduino e Smartphone – Projeto DIY Fácil
  9. Monitor de Frequência Cardíaca IoT em Tempo Real com Arduino e MAX30100
  10. Servidor Web Arduino Uno WiFi: Controle LED via Navegador