Table des matières:

SUIVI DU VISAGE À L'AIDE D'ARDUINO !!! : 7 étapes
SUIVI DU VISAGE À L'AIDE D'ARDUINO !!! : 7 étapes

Vidéo: SUIVI DU VISAGE À L'AIDE D'ARDUINO !!! : 7 étapes

Vidéo: SUIVI DU VISAGE À L'AIDE D'ARDUINO !!! : 7 étapes
Vidéo: Créer un système de RECONNAISSANCE FACIALE ? Opencv et Python 2024, Juillet
Anonim
SUIVI DU VISAGE À L'AIDE D'ARDUINO !!!
SUIVI DU VISAGE À L'AIDE D'ARDUINO !!!

Dans un précédent instructable, j'ai expliqué comment vous pouvez communiquer entre Arduino et Python à l'aide du module « pyserial » et contrôler une LED. Si vous ne l'avez pas vu, c'est ici: COMMUNICATION ENTRE ARDUINO & PYTHON !

Et comment vous pouvez détecter la couleur d'un objet et le suivre à l'écran, vérifiez-le ici: DÉTECTION DE COULEUR À L'AIDE D'OPENCV ET DE PYTHON.

Dans ce Instructable, je vais vous montrer comment suivre les visages à l'aide d'Arduino & Python et faire en sorte que la caméra suive le visage. Cela peut sembler difficile, mais croyez-moi, ce n'est pas le cas, tout ce dont vous avez besoin est une connaissance de base d'Arduino et de Python.

Alors, commençons…

Étape 1: Choses dont vous aurez besoin:

Choses dont vous aurez besoin
Choses dont vous aurez besoin
Choses dont vous aurez besoin
Choses dont vous aurez besoin
Choses dont vous aurez besoin
Choses dont vous aurez besoin

Les exigences sont minimales. Ici, j'ai fourni une liste de pièces de tout ce dont vous avez besoin:

Configuration matérielle requise:

  • Arduino UNO (Amazon US / Amazon EU)
  • Caméra Web (Amazon US / Amazon EU)
  • Servos x 2 (Amazon US / Amazon EU)
  • Planche à pain (Amazon US / Amazon EU)
  • Kit Servo Pan Tilt (Amazon US / Amazon EU)

Configuration logicielle requise:

  1. Python 2.7 (doit être installé, le système d'exploitation Linux l'a généralement pré-installé)
  2. OpenCV (vous pouvez le télécharger séparément ou l'installer en utilisant 'pip install' expliqué plus loin)
  3. pyserial (peut être installé avec pip)
  4. numpy.
  5. Haarcascade.

Une fois que tout est rassemblé, nous pouvons passer à l'étape d'installation…

Étape 2: Configuration de l'environnement Python:

Mise en place de l'environnement Python
Mise en place de l'environnement Python
Mise en place de l'environnement Python
Mise en place de l'environnement Python
Mise en place de l'environnement Python
Mise en place de l'environnement Python

Installation de Python:

Nous avons donc d'abord besoin de Python 2.7 opérationnel. Pour ce faire, téléchargez et installez python 2.7.14. Pour vérifier s'il est correctement installé, allez à: Recherche Windows >> Tapez "IDLE" >> Appuyez sur Entrée. Un shell Python devrait apparaître.

OU

Dans la recherche, tapez « CMD » et appuyez sur Entrée pour ouvrir l'invite de commande. Dans CMD, tapez >> python et appuyez sur Entrée, l'interface Python doit afficher.

Si vous voyez une erreur dans CMD, Ne paniquez pas, vous devrez probablement définir une variable d'environnement. Vous pouvez suivre ce tutoriel ici pour configurer la variable d'environnement.

Installation de 'pyserial', 'OpenCV" et "numpy" en python:

Pour installer ces modules, nous utiliserons pip install, Ouvrez d'abord CMD et tapez les codes suivants: -

pip installer la série

pip installer opencv-python > pip installer numpy

ces commandes installeront les modules nécessaires. Passons maintenant à la partie codage…

Étape 3: Script Python:

Script Python
Script Python

Avant de commencer à écrire du code, la première chose à faire est de créer un nouveau dossier car tout le code doit être stocké dans le même dossier. Alors créez un nouveau dossier, nommez-le comme vous voulez. et téléchargez le 'Haarcascade' ci-dessous et collez-le dans le dossier.

Maintenant, ouvrez le bloc-notes et écrivez le script ci-dessous, enregistrez-le sous le nom 'face.py' dans le même dossier que haarcascade. (Vous pouvez télécharger le code que j'ai fourni le fichier ci-dessous):

#importer tous les modules requis

import numpy as np import serial import time import sys import cv2 #Setup Chemin de communication pour arduino (à la place de 'COM5' mettez le port auquel votre arduino est connecté) arduino = serial. Serial('COM5', 9600) time.sleep (2) print("Connecté à arduino…") #importation de Haarcascade pour la détection des visages face_cascade = cv2. CascadeClassifier('haarcascade_frontalface_default.xml') #Pour capturer le flux vidéo de la webcam. cap = cv2. VideoCapture(0) #Lire l'image capturée, la convertir en image grise et trouver des visages tandis que 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) gray = cv2.cvtColor(img, cv2. COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3) # détecter le visage et faire un rectangle autour de lui. pour (x, y, w, h) dans les 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] 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)) # Centre du roi (Rectangle) xx = int(x+(x+h))/2 yy = int(y+(y+w))/2 print (xx) print (yy) center = (xx, yy) # envoyer des données à arduino print("Center of Rectangle is:", center) data = "X{0:d}Y{1:d}Z".format(xx, yy) print ("output = '" +data+ "'") arduino.write(data) #Affiche le flux. cv2.imshow('img', img) #Appuyez sur 'Esc' pour terminer l'exécution k = cv2.waitKey(30) & 0xff if k == 27: break

Une fois cela fait, passez à l'écriture du code pour arduino…

Étape 4: Code Arduino:

Code Arduino
Code Arduino

Une fois le script python prêt, nous avons besoin d'un croquis arduino pour contrôler le servo. Référez - vous au code ci - dessous, collez - le dans Arduino IDE et enregistrez - le sous le nom « servo.ino » dans le même dossier que face.py et haarcascade. téléchargez le code et passez à l'étape suivante pour établir les connexions.

(Fichier téléchargeable ci-dessous)

#comprendre

Servo servoVer; //Servo Servo ServoHor vertical; //Servo horizontal int x; int y; int prevX; int précédent; void setup() { Serial.begin(9600); servoVer.attach(5); // Attachez le servo vertical à la broche 5 servoHor.attach (6); // Attacher le servo horizontal à la broche 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(); } } }

Étape 5: Mécanisme Pan-Tilt:-

Mécanisme Pan-Tilt
Mécanisme Pan-Tilt
Mécanisme Pan-Tilt
Mécanisme Pan-Tilt

J'ai utilisé un kit facilement disponible pour le Pan-Tilt. Si vous le souhaitez, vous pouvez en fabriquer un vous-même en utilisant du bois/plastique ou même en imprimer un en 3D.

Celui que j'ai utilisé est assez bon marché et très facile à assembler. Pourtant, si vous voulez des instructions sur la façon de procéder, vous pouvez les trouver ici.

Étape 6: Établir des connexions:

Établir des connexions
Établir des connexions
Établir des connexions
Établir des connexions

Le circuit est assez simple. Attachez simplement deux servos à l'arduino.

  1. Vertical à la broche 5
  2. Horizontal à la broche 6
  3. Alimentation à +5V
  4. Terre à GND

Vérifiez le schéma de circuit pour référence.

Étape 7: TESTER:

  • Une fois que tout est fait, la dernière chose à faire est de tester si cela fonctionne. Pour tester d'abord, assurez-vous que les servos sont correctement connectés à l'arduino et que le croquis est téléchargé.
  • Une fois le sketch téléchargé, assurez-vous de fermer l'IDE afin que le port soit libre de se connecter à python.
  • Ouvrez maintenant 'face.py' avec Python IDLE et appuyez sur 'F5' pour exécuter le code. Il faudra quelques secondes pour se connecter à arduino, puis vous devriez pouvoir voir une fenêtre diffusant la webcam. Maintenant, le code détectera votre visage et les servos le suivront.
  • Le servo doit se déplacer lorsque vous déplacez l'objet. Maintenant, fixez simplement la caméra aux servos pour qu'elle se déplace avec les servos.

Merci.

Conseillé: