Índice:
- Etapa 1: Coisas que você precisa:
- Etapa 2: configurar o ambiente Python:
- Etapa 3: Script Python:
- Etapa 4: Código Arduino:
- Etapa 5: Mecanismo de Pan-Tilt: -
- Etapa 6: Fazendo conexões:
- Etapa 7: TESTE:
Vídeo: RASTREAMENTO DE ROSTO USANDO ARDUINO !!!: 7 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
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:
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:
- Python 2.7 (deve ser instalado, o sistema operacional Linux geralmente o tem pré-instalado)
- OpenCV (você pode baixá-lo separadamente ou instalar usando 'pip install' explicado mais adiante)
- pyserial (pode ser instalado com pip)
- entorpecido.
- Haarcascade.
Depois que tudo estiver reunido, podemos passar para a etapa de instalação …
Etapa 2: configurar 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:
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:
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: -
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:
O circuito é muito simples. Basta conectar dois servos ao Arduino.
- Vertical para Pino 5
- Horizontal para o Pino 6
- Alimentação para + 5V
- 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:
Detecção de rosto no Raspberry Pi 4B em 3 etapas: 3 etapas
Detecção de rosto no Raspberry Pi 4B em 3 etapas: Neste Instructable, vamos realizar a detecção de rosto no Raspberry Pi 4 com Shunya O / S usando a Biblioteca Shunyaface. Shunyaface é uma biblioteca de reconhecimento / detecção de rosto. O projeto visa alcançar a detecção mais rápida e velocidade de reconhecimento com
Rastreamento de movimento usando MPU-6000 e Arduino Nano: 4 etapas
Rastreamento de movimento usando MPU-6000 e Arduino Nano: MPU-6000 é um sensor de rastreamento de movimento de 6 eixos que possui acelerômetro de 3 eixos e giroscópio de 3 eixos embutidos. Este sensor é capaz de rastrear com eficiência a posição e localização exata de um objeto no plano tridimensional. Pode ser empregado i
Câmera IP com detecção de rosto usando a placa ESP32-CAM: 5 etapas
Câmera IP com detecção de rosto usando a placa ESP32-CAM: Esta postagem é diferente das outras e damos uma olhada na placa ESP32-CAM muito interessante que é surpreendentemente barata (menos de US $ 9) e fácil de usar. Criamos uma câmera IP simples que pode ser usada para transmitir um feed de vídeo ao vivo usando o 2
Dispositivo de segurança para mulheres com rastreamento e alertas GPS usando Arduino: 6 etapas
Dispositivo de segurança para mulheres com rastreamento e alertas por GPS usando Arduino: com toda a tecnologia disponível para nós nos últimos tempos, não é difícil construir um dispositivo de segurança para mulheres que não apenas gerará um alarme de emergência, mas também enviará uma mensagem para seus amigos e familiares , ou pessoa em causa. Aqui vamos construir uma banda
Robôs de rastreamento de rosto e detecção de sorriso para Halloween: 8 etapas (com fotos)
Rastreamento de Rosto e Detecção de Sorriso Robôs de Halloween: O Halloween está chegando! Decidimos construir algo legal. Conheça os robôs Ghosty e Skully. Eles podem seguir seu rosto e saber quando você está sorrindo para rir com você! Este projeto é outro exemplo de uso do aplicativo iRobbie que converte o iPhone int