Índice:

Dispositivo de rastreamento facial! Python e Arduino: 5 etapas
Dispositivo de rastreamento facial! Python e Arduino: 5 etapas

Vídeo: Dispositivo de rastreamento facial! Python e Arduino: 5 etapas

Vídeo: Dispositivo de rastreamento facial! Python e Arduino: 5 etapas
Vídeo: Reconhecimento Facial com Python, OpenCV e Mediapipe 2024, Novembro
Anonim
Image
Image
Dispositivo de rastreamento facial! Python e Arduino
Dispositivo de rastreamento facial! Python e Arduino
Dispositivo de rastreamento facial! Python e Arduino
Dispositivo de rastreamento facial! Python e Arduino

Por Techovator0819My Youtube ChannelFollow Mais do autor:

IoT: Weather Box (com alarmes e temporizadores personalizados)
IoT: Weather Box (com alarmes e temporizadores personalizados)
IoT: Weather Box (com alarmes e temporizadores personalizados)
IoT: Weather Box (com alarmes e temporizadores personalizados)
O robô autônomo multifuncional: 'Ativo'
O robô autônomo multifuncional: 'Ativo'
O robô autônomo multifuncional: 'Ativo'
O robô autônomo multifuncional: 'Ativo'

Sobre: Eu adoro fazer coisas novas. Como coisas que lidam com microcontroladores, engenharia mecânica, Inteligência Artificial, Ciência da Computação e qualquer coisa que me interesse. E aqui você encontrará todos os… Mais sobre Techovator0819 »

Olá a todos que estão lendo este instrutível. Este é um dispositivo de rastreamento facial que funciona em uma biblioteca python chamada OpenCV. CV significa 'Visão do Computador'. Em seguida, configurei uma interface serial entre meu PC e meu Arduino UNO. Isso significa que isso não funciona apenas em Python.

Este dispositivo reconhece seu rosto no quadro, então ele envia certos comandos para o Arduino para posicionar a câmera de forma que ela fique dentro do quadro! Parece legal? Vamos pular direto então.

Suprimentos

1. Arduino UNO

2. 2 x servo motores (qualquer servo motor vai servir, mas eu usei Tower Pro SG90)

3. Instalando Python

4. Instalando o OpenCV

5. Câmera web

Etapa 1: Instalando Python e OpenCV

A instalação do Python é bastante simples!

www.python.org/downloads/

Você pode seguir o link acima para baixar a versão python (Mac, Windows ou Linux) que melhor se adapta a você (64 bits ou 32 bits). O resto do processo de instalação é simples e você será guiado pela interface.

Assim que terminar a instalação, abra o prompt de comando e digite o seguinte:

pip install opencv-python

Isso deve instalar a biblioteca openCV. Em caso de solução de problemas, você pode verificar ESTA página.

Depois de configurar o Ambiente e todos os pré-requisitos, vamos ver como podemos realmente construir isso!

Etapa 2: Quais são os recursos do tipo Haar?

Características semelhantes a Haar são características de uma imagem digital. O nome vem de wavelets Haar. Trata-se de uma família de ondas quadradas que são utilizadas para identificar características em uma imagem digital. Cascatas de Haar é basicamente um classificador que nos ajuda a detectar objetos (em nossos rostos de caso) usando os recursos do tipo haar.

Em nosso caso, para simplificar, usaremos Haar Cascades pré-treinados para identificar faces. Você pode seguir ESTE link de uma página do github e baixar o arquivo xml para Haar Cascade.

1. Clique em 'haarcascade_frontalface_alt.xml'

2. Clique no botão 'Raw' na parte superior direita da janela de código.

3. Ele o direcionará para outra página com apenas texto.

4. Clique com o botão direito e clique em 'Salvar como..'

5. Salve-o no mesmo diretório ou pasta do código Python que você está prestes a escrever.

Etapa 3: codificação em Python

import cv2

import numpy como np import serial import time

Importamos todas as bibliotecas de que precisamos.

ard = serial. Serial ("COM3", 9600)

Criamos um objeto serial chamado 'ard'. Também especificamos o nome da porta e o BaudRate como parâmetros.

face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')

Criamos outro objeto para nossa Cascata Haar. Certifique-se de que o arquivo HaarCascade permaneça na mesma pasta que este programa python.

vid = cv2. VideoCapture (0)

Criamos um objeto para capturar vídeo da webcam. 0 como parâmetro significa a primeira webcam conectada ao meu PC.

docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html

enquanto verdadeiro:

_, frame = vid.read () # lê o frame atual para a variável frame gray = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) #converts frame -> imagem em escala de cinza #a linha seguinte detecta rostos. #First parâmetro é a imagem na qual você deseja detectar em # minSize = () especifica o tamanho mínimo do rosto em termos de pixels #Clique no link acima para saber mais sobre a classificação Cascade faces = face_cascade.detectMultiScale (cinza, minSize = (80, 80), minNeighbors = 3) #A para loop para detectar as faces. para (x, y, w, h) nas faces: cv2.rectangle (frame, (x, y), (x + w, y + h), (255, 0, 0), 2) #desenha um retângulo ao redor o rosto Xpos = x + (w / 2) # calcula a coordenada X do centro do rosto. Ypos = y + (h / 2) #calcualtes a coordenada Y do centro do rosto se Xpos> 280: #Os blocos de código a seguir verificam se o rosto é ard.write ('L'.encode ()) #on à esquerda, direita, superior ou inferior em relação ao tempo.sleep (0,01) #centro do quadro. elif Xpos 280: ard.write ('D'.encode ()) time.sleep (0,01) elif Ypos <200: ard.write (' U'.encode ()) time.sleep (0,01) else: ard.write ('S'.encode ()) time.sleep (0.01) break cv2.imshow (' frame ', frame) #exibe o frame em uma janela separada. k = cv2.waitKey (1) & 0xFF if (k == ord ('q')): # se 'q' for pressionado no teclado, ele sai do loop while. pausa

cv2.destroyAllWindows () # fecha todas as janelas

ard.close () # fecha a comunicação serial

vid.release () #para de receber vídeo da webcam.

Etapa 4: Programando o Arduino

Sinta-se à vontade para modificar o programa de acordo com a configuração do hardware de acordo com suas necessidades.

#incluir

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

void setup () {

// coloque seu código de configuração aqui, para executar uma vez: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); atraso (1000); }

entrada char = ""; // a entrada serial é armazenada nesta variável

void loop () {

// coloque seu código principal aqui, para executar repetidamente: if (Serial.available ()) {// verifica se há algum dado no buffer serial input = Serial.read (); // lê os dados em uma variável if (input == 'U') {servoY.write (y + 1); // ajusta o ângulo do servo de acordo com a entrada y + = 1; // atualiza o valor do ângulo} else if (input == 'D') {servoY.write (y-1); y - = 1; } else {servoY.write (y); } if (input == 'L') {servoX.write (x-1); x - = 1; } else if (input == 'R') {servoX.write (x + 1); x + = 1; } else {servoX.write (x); } input = ""; // limpa a variável} // o processo continua se repetindo !!:)}

Etapa 5: Conclusão

Esta é uma maneira agradável e interativa por meio da qual você pode projetar incorporar a Visão do Computador em seus projetos do Arduino. A visão computacional é realmente muito divertida. E eu realmente espero que vocês tenham gostado. Se sim, deixe-me saber nos comentários. E por favor se inscreva no meu canal no youtube. Agradecemos antecipadamente <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Recomendado: