Table des matières:
- Étape 1: Choses dont vous aurez besoin:
- Étape 2: Configuration de l'environnement Python:
- Étape 3: Script Python:
- Étape 4: Code Arduino:
- Étape 5: Mécanisme Pan-Tilt:-
- Étape 6: Établir des connexions:
- Étape 7: TESTER:
Vidéo: SUIVI DU VISAGE À L'AIDE D'ARDUINO !!! : 7 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
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:
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:
- Python 2.7 (doit être installé, le système d'exploitation Linux l'a généralement pré-installé)
- OpenCV (vous pouvez le télécharger séparément ou l'installer en utilisant 'pip install' expliqué plus loin)
- pyserial (peut être installé avec pip)
- numpy.
- Haarcascade.
Une fois que tout est rassemblé, nous pouvons passer à l'étape d'installation…
Étape 2: Configuration 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:
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:
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:-
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:
Le circuit est assez simple. Attachez simplement deux servos à l'arduino.
- Vertical à la broche 5
- Horizontal à la broche 6
- Alimentation à +5V
- 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é:
Kits de voiture de suivi de robot intelligent bricolage Suivi de voiture photosensible: 7 étapes
DIY Smart Robot Tracking Car Kits Tracking Car Photosensible: Design by SINONING ROBOTVous pouvez acheter à partir de la puce de suivi du robot carTheoryLM393 comparer les deux photorésistances, lorsqu'il y a une LED de photorésistance latérale sur BLANC le côté du moteur s'arrêtera immédiatement, l'autre côté du moteur tourner, de sorte que
Dispositif de suivi du visage ! Python et Arduino : 5 étapes
Dispositif de suivi du visage ! Python & Arduino : Bonjour tout le monde en train de lire cette instructable. Il s'agit d'un dispositif de suivi de visage qui fonctionne sur une bibliothèque python appelée OpenCV. CV signifie 'Computer Vision'. Ensuite, j'ai configuré une interface série entre mon PC et mon Arduino UNO. Donc ça veut dire ça
Suivi du visage et détection des sourires des robots d'Halloween : 8 étapes (avec photos)
Suivi du visage et détection des sourires des robots d'Halloween : Halloween approche ! Nous avons décidé de construire quelque chose de cool. Rencontrez les robots Ghosty et Skully. Ils peuvent suivre votre visage et ils savent quand vous souriez pour rire avec vous ! Ce projet est un autre exemple d'utilisation de l'application iRobbie qui convertit l'iPhone en
Pistolet de suivi du visage : 4 étapes
Pistolet de suivi de visage : Ce projet est une extension du projet de pistolet à fil laser montré ici - https://www.instructables.com/id/Building-a-Sentry-Gun-with-Laser-Trip-Wire-System-/ ?ALLSTEPS La seule différence est que le pistolet ne sera pas déclenché par laser mais par
Robot mendiant avec suivi du visage et contrôle par manette Xbox - Arduino : 9 étapes (avec photos)
Robot mendiant avec suivi facial et contrôle par manette Xbox - Arduino : Nous allons créer un robot mendiant. Ce robot essaiera d'irriter ou d'attirer l'attention des passants. Il détectera leurs visages et essaiera de leur tirer des lasers. Si vous donnez une pièce au robot, il chantera une chanson et dansera. Le robot aura besoin d'un