Table des matières:

Dispositif de suivi du visage ! Python et Arduino : 5 étapes
Dispositif de suivi du visage ! Python et Arduino : 5 étapes

Vidéo: Dispositif de suivi du visage ! Python et Arduino : 5 étapes

Vidéo: Dispositif de suivi du visage ! Python et Arduino : 5 étapes
Vidéo: Créer un système de RECONNAISSANCE FACIALE ? Opencv et Python 2024, Novembre
Anonim
Image
Image
Dispositif de suivi du visage ! Python et Arduino
Dispositif de suivi du visage ! Python et Arduino
Dispositif de suivi du visage ! Python et Arduino
Dispositif de suivi du visage ! Python et Arduino

Par Techovator0819Ma chaîne YoutubeSuivez plus par l'auteur:

IoT: Weather Box (avec alarmes et minuteries personnalisées)
IoT: Weather Box (avec alarmes et minuteries personnalisées)
IoT: Weather Box (avec alarmes et minuteries personnalisées)
IoT: Weather Box (avec alarmes et minuteries personnalisées)
Le Robot Autonome multifonctionnel: « Atout »
Le Robot Autonome multifonctionnel: « Atout »
Le Robot Autonome multifonctionnel: « Atout »
Le Robot Autonome multifonctionnel: « Atout »

À 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é: