Cuprins:
- Pasul 1: Lucruri de care veți avea nevoie:
- Pasul 2: Configurarea mediului Python:
- Pasul 3: Script Python:
- Pasul 4: Cod Arduino:
- Pasul 5: Mecanism Pan-Tilt: -
- Pasul 6: Realizarea conexiunilor:
- Pasul 7: TESTARE:
Video: Urmărirea feței folosind ARDUINO !!!: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Într-o instruire anterioară am împărtășit cum puteți comunica între Arduino și Python folosind modulul „pyserial” și cum puteți controla un LED. Dacă nu l-ați văzut verificați-l aici: COMUNICARE ÎNTRE ARDUINO & PYTHON!
Și cum puteți detecta culoarea unui obiect și urmăriți-l pe ecran, verificați aici: DETECȚIA CULORII FOLOSIND OPENCV ȘI PITON.
În acest Instructable vă voi arăta cum să urmăriți fețele folosind Arduino și Python și să fac camera să urmeze fața. Acest lucru poate suna dificil, dar credeți-mă că nu este. Tot ce aveți nevoie este cunoștințe de bază despre Arduino și Python.
Deci sa începem…
Pasul 1: Lucruri de care veți avea nevoie:
Cerințele sunt minime. Aici am furnizat lista de piese cu tot ce aveți nevoie:
Cerințe hardware:
- Arduino UNO (Amazon SUA / Amazon UE)
- Cam web (Amazon SUA / Amazon UE)
- Servos x 2 (Amazon SUA / Amazon UE)
- Breadboard (Amazon SUA / Amazon UE)
- Kit Servo Pan Tilt (Amazon SUA / Amazon UE)
Cerințe software:
- Python 2.7 (ar trebui să fie instalat, sistemul de operare Linux îl are de obicei preinstalat)
- OpenCV (Puteți să-l descărcați separat sau să îl instalați folosind „pip install” explicat în continuare)
- pyserial (Poate fi instalat cu pip)
- neclintit.
- Haarcascade.
După ce fiecare lucru este adunat, putem trece la Pasul de instalare …
Pasul 2: Configurarea mediului Python:
Instalarea Python:
Deci, mai întâi avem nevoie de Python 2.7 și să ruleze. Pentru a face acest lucru, descărcați și instalați primul python 2.7.14. Pentru a verifica dacă este instalat corect Mergeți: Căutare Windows >> Tastați "IDLE" >> Apăsați Enter. Ar trebui să apară un Shell Python.
SAU
În căutare, tastați „CMD” și apăsați Enter pentru a deschide linia de comandă. În CMD tastați >> python și apăsați Enter, ar trebui să se afișeze interfața Python.
Dacă vedeți o eroare în CMD, Nu vă panicați, probabil că trebuie să setați variabila de mediu. Puteți urmări acest tutorial aici pentru a configura variabila de mediu.
Instalarea „pyserial”, „OpenCV” și „numpy” în python:
Pentru a instala aceste module vom folosi utilizarea instalării pip, Mai întâi deschideți CMD și tastați următoarele coduri: -
pip instalează serial
pip install opencv-python> pip install numpy
aceste comenzi vor instala modulele necesare. Acum putem trece la partea de codare …
Pasul 3: Script Python:
Înainte de a începe să scrieți codul, primul lucru pe care trebuie să îl faceți este să creați un folder nou, deoarece tot codul trebuie să fie stocat în același folder. Deci, creați un folder nou, denumiți-l oricum doriți. și descărcați „Haarcascade” de mai jos și lipiți-l în dosar.
Acum deschideți blocnotesul și scrieți scriptul dat mai jos, Salvați-l ca „face.py” în același folder ca haarcascade. (Puteți descărca codul de care am furnizat fișierul de mai jos):
#import toate modulele necesare
import numpy ca np import serial import time import sys import cv2 #Setup Calea de comunicare pentru arduino (În locul „COM5” puneți portul la care este conectat arduino) arduino = serial. Serial („COM5”, 9600) time.sleep (2) print ("Conectat la arduino …") #importarea Haarcascade pentru detectarea feței face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Pentru a captura fluxul video de pe camera web. cap = cv2. VideoCapture (0) #Citiți imaginea capturată, convertiți-o în imagine Gri și găsiți fețe în timp ce 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) gri = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale (gri, 1.3) # detectați fața și faceți un dreptunghi în jurul ei. pentru (x, y, w, h) în fețe: cv2.rectangle (img, (x, y), (x + w, y + h), (0, 255, 0), 5) roi_gray = gri [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)) # Centru roi (dreptunghi) xx = int (x + (x + h)) / 2 yy = int (y + (y + w)) / 2 print (xx) print (yy) center = (xx, yy) # trimiterea datelor către arduino print ("Centrul dreptunghiului este:", centru) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" + data + "'") arduino.write (data) #Display fluxul. cv2.imshow ('img', img) #Hit 'Esc' pentru a termina execuția k = cv2.waitKey (30) & 0xff dacă k == 27: pauză
Odată ce ați făcut acest lucru, treceți la scrierea codului pentru arduino …
Pasul 4: Cod Arduino:
După ce scriptul python este gata, avem nevoie de schița arduino pentru a controla servo-ul. Consultați codul de mai jos, lipiți-l în Arduino IDE și salvați-l ca „servo.ino” în același folder cu face.py și haarcascade. încărcați codul și treceți la pasul următor pentru a face conexiunile.
(Fișier descărcabil dat mai jos)
#include
Servo servoVer; // Servo vertical Servo servoHor; // Servo orizontal int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Atașați servo vertical la pinul 5 servoHor.attach (6); // Atașați Servo orizontal la pinul 6 servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = map (x, 600, 0, 70, 179); int servoY = hartă (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 (); }}}
Pasul 5: Mecanism Pan-Tilt: -
Am folosit un kit disponibil pentru Pan-Tilt. Dacă doriți, puteți face unul singur folosind lemn / plastic sau chiar imprimare 3D.
Cel pe care l-am folosit este destul de ieftin și foarte ușor de asamblat. Cu toate acestea, dacă doriți instrucțiuni despre cum să faceți acest lucru, îl puteți găsi aici.
Pasul 6: Realizarea conexiunilor:
Circuitul este destul de simplu. Atașați doar două servos la arduino.
- Vertical la pinul 5
- Orizontală la pinul 6
- Putere la + 5V
- Pământ la GND
Verificați schema circuitului pentru referință.
Pasul 7: TESTARE:
- După ce totul este făcut, ultimul lucru de făcut este să testați dacă funcționează. Pentru a testa mai întâi, asigurați-vă că serverele sunt conectate corect la arduino și schița este încărcată.
- După ce schița este încărcată, asigurați-vă că închideți IDE, astfel încât portul să se poată conecta liber la python.
- Acum deschideți „face.py” cu Python IDLE și apăsați „F5” pentru a rula codul. Va dura câteva secunde pentru a vă conecta la arduino și atunci ar trebui să puteți vedea o fereastră care transmite camera web. Acum, codul vă va detecta fața, iar serviciile îl vor urmări.
- Servo-ul ar trebui să se miște în timp ce mutați obiectul. Acum, atașați camera la servo pentru a se deplasa împreună cu servo-urile.
Mulțumesc.
Recomandat:
Urmărirea mișcării folosind MPU-6000 și Arduino Nano: 4 pași
Urmărirea mișcării utilizând MPU-6000 și Arduino Nano: MPU-6000 este un senzor de urmărire a mișcării pe 6 axe, care are încorporat accelerometru pe 3 axe și giroscop cu 3 axe. Acest senzor este capabil să urmărească eficient poziția și locația exactă a unui obiect în planul tridimensional. Poate fi folosit în
Urmărirea mișcării folosind MPU-6000 și Raspberry Pi: 4 pași
Urmărirea mișcării folosind MPU-6000 și Raspberry Pi: MPU-6000 este un senzor de urmărire a mișcării pe 6 axe care are încorporat accelerometru pe 3 axe și giroscop cu 3 axe. Acest senzor este capabil să urmărească eficient poziția și locația exactă a unui obiect în planul tridimensional. Poate fi folosit în
Recunoașterea și identificarea feței Arduino Face ID folosind OpenCV Python și Arduino .: 6 pași
Recunoașterea și identificarea feței | Arduino Face ID Folosind OpenCV Python și Arduino .: Recunoașterea facială AKA Face ID este una dintre cele mai importante caracteristici de pe telefoanele mobile din zilele noastre. Așadar, am avut o întrebare „pot să am un id al feței pentru proiectul meu Arduino”? iar răspunsul este da … Călătoria mea a început după cum urmează: Pasul 1: Acces la noi
DIY Smart Robot Urmărirea truselor de mașini Urmărirea mașinii fotosensibile: 7 pași
DIY Smart Robot Tracking Car Kits Tracking Car Photosensitive: Design by SINONING ROBOT Puteți cumpăra de la robotul de urmărire Teoria LM393 cip comparați cei doi fotorezistenți, când există un LED fotorezistor lateral pe ALB, partea motorului se va opri imediat, cealaltă parte a motorului răsuciți, astfel încât
Urmărirea feței și detectarea zâmbetului Roboții de Halloween: 8 pași (cu imagini)
Urmărirea feței și detectarea zâmbetului Roboți de Halloween: Halloween vine! Am decis să construim ceva mișto. Faceți cunoștință cu roboții Ghosty și Skully. Îți pot urmări fața și știu când zâmbești să râzi cu tine! Acest proiect este un alt exemplu de utilizare a aplicației iRobbie care convertește iPhone-ul în