Table des matières:
- Fournitures
- Étape 1: Installer Python et OpenCV
- Étape 2: Quelles sont les fonctionnalités de type Haar ?
- Étape 3: coder en Python
- Étape 4: Programmation de l'Arduino
- Étape 5: Conclusion
Vidéo: Dispositif de suivi du visage ! Python et Arduino : 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Par Techovator0819Ma chaîne YoutubeSuivez plus par l'auteur:
À propos: J'adore créer de nouvelles choses. Comme les choses concernant les microcontrôleurs, l'ingénierie mécanique, l'intelligence artificielle, l'informatique et tout ce qui m'intéresse. Et ici vous trouverez tous les… En savoir plus sur Techovator0819 »
Bonjour à tous 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. Cela signifie donc que cela ne fonctionne pas uniquement sur Python.
Cet appareil reconnaît votre visage dans le cadre, puis il envoie certaines commandes à l'Arduino pour positionner la caméra de manière à ce qu'elle reste à l'intérieur du cadre ! Cela paraît bien? Allons droit dedans alors.
Fournitures
1. Arduino UNO
2. 2 x servomoteurs (Tous les servomoteurs conviendront mais j'ai utilisé Tower Pro SG90)
3. Installation de Python
4. Installation d'OpenCV
5. Caméra Web
Étape 1: Installer Python et OpenCV
L'installation de Python est assez simple !
www.python.org/downloads/
Vous pouvez suivre le lien ci-dessus pour télécharger la version python (Mac, Windows ou Linux) qui vous convient le mieux (64 bits ou 32 bits). Le reste du processus d'installation est simple et vous serez guidé à travers l'interface.
Une fois l'installation terminée, ouvrez votre invite de commande et tapez ce qui suit:
pip installer opencv-python
Cela devrait installer la bibliothèque openCV. En cas de dépannage, vous pouvez consulter CETTE page.
Après avoir configuré l'environnement et tous les prérequis, voyons comment nous pouvons réellement le construire !
Étape 2: Quelles sont les fonctionnalités de type Haar ?
Les caractéristiques de type Haar sont des caractéristiques d'une image numérique. Le nom vient des ondelettes de Haar. Il s'agit d'une famille d'ondes de forme carrée qui sont utilisées pour identifier les caractéristiques d'une image numérique. Haar cascades est essentiellement un classificateur qui nous aide à détecter des objets (dans notre cas, des visages) à l'aide des caractéristiques de type haar.
Dans notre cas, pour plus de simplicité, nous utiliserons des Haar Cascades pré-entraînées pour identifier les visages. Vous pouvez suivre CE lien d'une page github et télécharger le fichier xml pour Haar Cascade.
1. Cliquez sur 'haarcascade_frontalface_alt.xml'
2. Cliquez sur le bouton « Raw » dans la partie supérieure droite de la fenêtre de code.
3. Il vous dirigera vers une autre page avec uniquement du texte.
4. Cliquez avec le bouton droit de la souris et appuyez sur « Enregistrer sous… »
5. Enregistrez-le dans le même répertoire ou dossier que celui du code python que vous êtes sur le point d'écrire.
Étape 3: coder en Python
importer cv2
import numpy as np import serial import time
Nous importons toutes les bibliothèques dont nous avons besoin.
ard = série. Série("COM3", 9600)
Nous créons un objet sériel appelé 'ard'. Nous spécifions également le nom du port et le BaudRate comme paramètres.
face_cascade = cv2. CascadeClassifier('haarcascade_frontalface_default.xml')
Nous créons un autre objet pour notre Haar Cascade. Assurez-vous que le fichier HaarCascade reste dans le même dossier que ce programme python.
vid = cv2. Capture vidéo(0)
Nous créons un objet qui capture la vidéo de la webcam. 0 comme paramètre signifie la première webcam connectée à mon PC.
docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html
tant que vrai:
_, frame = vid.read()#lit l'image actuelle dans la variable frame gray = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY)#convertit l'image -> image en niveaux de gris #la ligne suivante détecte les visages. #Le premier paramètre est l'image sur laquelle vous souhaitez détecter sur #minSize=() spécifie la taille minimale du visage en termes de pixels #Cliquez sur le lien ci-dessus pour en savoir plus sur la classification en cascade faces = face_cascade.detectMultiScale(gray, minSize =(80, 80), minNeighbors=3) #Une boucle for pour détecter les visages. pour (x, y, w, h) dans les faces: cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)#dessine un rectangle autour le visage Xpos = x+(w/2)#calcule la coordonnée X du centre du visage. Ypos = y+(h/2)#calcule la coordonnée Y du centre du visage si Xpos > 280: #Les blocs de code suivants vérifient si le visage est ard.write('L'.encode()) #on la gauche, la droite, le haut ou le bas par rapport au time.sleep(0.01) #center du cadre. 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)# affiche le cadre dans une fenêtre séparée. k = cv2.waitKey(1)&0xFF if(k == ord('q')): #si 'q' est pressé sur le clavier, il quitte la boucle while. Pause
cv2.destroyAllWindows() #ferme toutes les fenêtres
ard.close() #ferme la communication série
vid.release() #arrête de recevoir la vidéo de la webcam.
Étape 4: Programmation de l'Arduino
N'hésitez pas à modifier le programme selon votre configuration matérielle en fonction de vos besoins.
#comprendre
Servo servoX;
Servo servoY;
entier x = 90;
entier y = 90;
void setup() {
// mettez votre code de configuration ici, à exécuter une fois: Serial.begin(9600); servoX.attach(9); servoY.attach(10); servoX.write(x); servoY.write(y); retard(1000); }
entrée de caractère = ""; // l'entrée série est stockée dans cette variable
boucle vide() {
// mettez votre code principal ici, pour l'exécuter à plusieurs reprises: if(Serial.available()){ //vérifie si des données se trouvent dans le tampon série input = Serial.read(); //lit les données dans une variable if(input == 'U'){ servoY.write(y+1); // ajuste l'angle du servo en fonction de l'entrée y += 1; // met à jour la valeur de l'angle } else if(input == 'D'){ servoY.write(y-1); y -= 1; } else{ servoY.write(y); } if(entrée == 'L'){ servoX.write(x-1); x -= 1; } else if(input == 'R'){ servoX.write(x+1); x += 1; } else{ servoX.write(x); } entrée = ""; //efface la variable } //le processus continue de se répéter !!:) }
Étape 5: Conclusion
C'est une manière agréable et interactive de concevoir et d'intégrer la vision par ordinateur dans vos projets Arduino. Computer Vision est en fait assez amusant. Et j'espère vraiment que vous avez aimé. Si oui, faites-le moi savoir dans les commentaires. Et n'hésitez pas à vous abonner à ma chaîne youtube. Merci d'avance <3<3
youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos
Conseillé:
SUIVI DU VISAGE À L'AIDE D'ARDUINO !!! : 7 étapes
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, consultez-le ici : COMMUNICATION ENTRE ARDUINO & PYTHON ! Et comment vous pouvez détecter la couleur o
Dispositif ASS (dispositif social antisocial) : 7 étapes
Dispositif ASS (dispositif social antisocial) : disons que vous êtes le genre de personne qui aime être avec les gens mais n'aime pas qu'ils s'approchent trop près. Vous aimez aussi les gens et avez du mal à dire non aux gens. Donc, vous ne savez pas comment leur dire de reculer. Eh bien, entrez - l'appareil ASS ! Oui
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