Índice:

RASTREAMENTO DE ROSTO USANDO ARDUINO !!!: 7 etapas
RASTREAMENTO DE ROSTO USANDO ARDUINO !!!: 7 etapas

Vídeo: RASTREAMENTO DE ROSTO USANDO ARDUINO !!!: 7 etapas

Vídeo: RASTREAMENTO DE ROSTO USANDO ARDUINO !!!: 7 etapas
Vídeo: Rastreando Objetos com Arduino e Visão Computacional 2024, Novembro
Anonim
RASTREAMENTO DE ROSTO USANDO ARDUINO !!!
RASTREAMENTO DE ROSTO USANDO ARDUINO !!!

Em um instrutível anterior, compartilhei como você pode se comunicar entre o Arduino e o Python usando o módulo 'pyserial' e controlar um LED. Se ainda não viu, dê uma olhada aqui: COMUNICAÇÃO ENTRE ARDUINO E PYTHON!

E como você pode detectar a cor de um objeto e rastreá-lo na tela, verifique aqui: DETECÇÃO DE COR USANDO OPENCV E PYTHON.

Neste Instructable, mostrarei como rastrear faces usando Arduino e Python e fazer a câmera seguir o rosto. Isso pode parecer difícil, mas acredite em mim, não é. Tudo que você precisa é um conhecimento básico de Arduino e Python.

Então vamos começar…

Etapa 1: Coisas que você precisa:

Coisas que você vai precisar
Coisas que você vai precisar
Coisas que você vai precisar
Coisas que você vai precisar
Coisas que você vai precisar
Coisas que você vai precisar

Os requisitos são mínimos. Aqui, forneci uma lista de partes de tudo que você precisa:

Requisito de hardware:

  • Arduino UNO (Amazon US / Amazon EU)
  • Web Cam (Amazon US / Amazon EU)
  • Servos x 2 (Amazon US / Amazon EU)
  • Breadboard (Amazon US / Amazon EU)
  • Kit Servo Pan Tilt (Amazon US / Amazon EU)

Requisito de software:

  1. Python 2.7 (deve ser instalado, o sistema operacional Linux geralmente o tem pré-instalado)
  2. OpenCV (você pode baixá-lo separadamente ou instalar usando 'pip install' explicado mais adiante)
  3. pyserial (pode ser instalado com pip)
  4. entorpecido.
  5. Haarcascade.

Depois que tudo estiver reunido, podemos passar para a etapa de instalação …

Etapa 2: configurar o ambiente Python:

Configurando o ambiente Python
Configurando o ambiente Python
Configurando o ambiente Python
Configurando o ambiente Python
Configurando o ambiente Python
Configurando o ambiente Python

Instalando Python:

Portanto, primeiro precisamos do Python 2.7 instalado e funcionando. Para fazer isso, primeiro baixe e instale o python 2.7.14. Para verificar se ele está instalado corretamente, vá para: Windows Search >> Digite "IDLE" >> Pressione Enter. Um Python Shell deve aparecer.

OU

Na pesquisa, digite 'CMD' e pressione Enter para abrir o Prompt de Comando. Em CMD digite >> python e pressione Enter, a interface Python deve ser exibida.

Se você vir um erro no CMD, não entre em pânico, você provavelmente precisará definir a variável de ambiente. Você pode seguir este tutorial aqui para configurar a variável de ambiente.

Instalando 'pyserial', 'OpenCV "e" numpy "em python:

Para instalar esses módulos, usaremos o pip install, Primeiro abra o CMD e digite os seguintes códigos: -

pip install serial

pip install opencv-python> pip install numpy

esses comandos irão instalar os módulos necessários. Agora podemos passar para a parte de codificação …

Etapa 3: Script Python:

Script Python
Script Python

Antes de começar a escrever o código, a primeira coisa a fazer é criar uma nova pasta, pois todo o código precisa ser armazenado na mesma pasta. Portanto, crie uma nova pasta com o nome que desejar. e baixe o 'Haarcascade' abaixo e cole na pasta.

Agora abra o bloco de notas e escreva o script abaixo, salve-o como 'face.py' na mesma pasta do haarcascade. (Você pode baixar o código que forneci no arquivo abaixo):

#import todos os módulos necessários

import numpy as np import serial import time import sys import cv2 #Setup Caminho de comunicação para arduino (no lugar de 'COM5' coloque a porta à qual seu arduino está conectado) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print ("Conectado ao arduino…") #importando o Haarcascade para detecção de rosto face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Para capturar o fluxo de vídeo da webcam. cap = cv2. VideoCapture (0) #Leia a imagem capturada, converta-a em imagem cinza e encontre faces enquanto 1: ret, img = cap.read () cv2.resizeWindow ('img', 500, 500) 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) cinza = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale (cinza, 1.3) # detecte o rosto e faça um retângulo ao redor dele. para (x, y, w, h) nas faces: cv2.rectangle (img, (x, y), (x + w, y + h), (0, 255, 0), 5) roi_gray = cinza [y: y + h, x: x + w] cor_roi = img [y: y + h, x: x + w] arr = {y: y + h, x: x + w} print (arr) print ('X: '+ str (x)) print (' Y: '+ str (y)) print (' x + w: '+ str (x + w)) print (' y + h: '+ str (y + h)) # Centro de roi (Retângulo) xx = int (x + (x + h)) / 2 yy = int (y + (y + w)) / 2 imprimir (xx) imprimir (yy) centro = (xx, yy) # enviando dados para arduino print ("Center of Rectangle is:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" + data + "'") arduino.write (data) #Exibe o stream. cv2.imshow ('img', img) #Hit 'Esc' para encerrar a execução k = cv2.waitKey (30) & 0xff if k == 27: break

Depois de fazer isso, prossiga para escrever o código para o Arduino …

Etapa 4: Código Arduino:

Código Arduino
Código Arduino

Depois que o script python estiver pronto, precisamos do esboço do arduino para controlar o servo. Consulte o código abaixo, cole-o no IDE do Arduino e salve-o como 'servo.ino' na mesma pasta que face.py e haarcascade. carregue o código e passe para a próxima etapa para fazer as conexões.

(Arquivo para download fornecido abaixo)

#incluir

Servo servoVer; // Servo Servo vertical servoHor; // Servo horizontal int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Anexe o servo vertical ao pino 5 servoHor.attach (6); // Anexe o servo horizontal ao pino 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 = min (servoX, 179); servoX = max (servoX, 70); servoY = min (servoY, 179); servoY = max (servoY, 95); 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 (); }}}

Etapa 5: Mecanismo de Pan-Tilt: -

Mecanismo Pan-Tilt
Mecanismo Pan-Tilt
Mecanismo Pan-Tilt
Mecanismo Pan-Tilt

Usei um kit já disponível para o Pan-Tilt. Se você quiser, pode fazer você mesmo usando madeira / plástico ou até mesmo imprimir em 3D.

O que usei é muito barato e muito fácil de montar. No entanto, se quiser instruções sobre como fazer isso, você pode encontrá-las aqui.

Etapa 6: Fazendo conexões:

Fazendo conexões
Fazendo conexões
Fazendo conexões
Fazendo conexões

O circuito é muito simples. Basta conectar dois servos ao Arduino.

  1. Vertical para Pino 5
  2. Horizontal para o Pino 6
  3. Alimentação para + 5V
  4. Terra para GND

Verifique o diagrama do circuito para referência.

Etapa 7: TESTE:

  • Depois que tudo estiver pronto, a última coisa a fazer é testar se funciona. Para testar primeiro, certifique-se de que os servos estão conectados corretamente ao arduino e que o sketch foi carregado.
  • Após o upload do esboço, certifique-se de fechar o IDE para que a porta esteja livre para se conectar ao python.
  • Agora abra 'face.py' com Python IDLE e pressione 'F5' para executar o código. A conexão com o arduino levará alguns segundos e você deverá ver uma janela transmitindo a webcam. Agora o código irá detectar seu rosto e os servos irão rastreá-lo.
  • O Servo deve se mover conforme você move o objeto. Agora, basta conectar a câmera aos servos para que ela se mova junto com os servos.

Obrigada.

Recomendado: