Kazalo:
- 1. korak: Stvari, ki jih boste potrebovali:
- 2. korak: Nastavitev okolja Python:
- 3. korak: Python Script:
- 4. korak: Koda Arduino:
- 5. korak: Mehanizem nagiba:-
- 6. korak: Vzpostavitev povezav:
- 7. korak: TESTIRANJE:
Video: Sledenje obrazu z uporabo ARDUINO !!!: 7 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:02
V prejšnjem navodilu sem delil, kako lahko komunicirate med Arduinom in Pythonom z uporabo modula 'pyserial' in nadzorujete LED. Če ga niste videli, preverite tukaj: KOMUNIKACIJA MED ARDUINOM & PYTHONOM!
In kako lahko zaznate barvo predmeta in mu sledite na zaslonu, preverite tukaj: BOLJNO DETEKCIJO Z UPORABO OPENCV IN PITONA.
V tem navodilu vam bom pokazal, kako slediti obrazom z uporabo Arduino & Python in kamero slediti obrazu. Morda se sliši težko, ampak verjemite mi, da ni, vse kar potrebujete je osnovno znanje o Arduinu in Pythonu.
Pa začnimo…
1. korak: Stvari, ki jih boste potrebovali:
Zahteve so minimalne. Tukaj sem predložil seznam delov vsega, kar potrebujete:
Strojna zahteva:
- Arduino UNO (Amazon ZDA / Amazon EU)
- Spletna kamera (Amazon ZDA / Amazon EU)
- Servos x 2 (Amazon ZDA / Amazon EU)
- Ogledna plošča (Amazon ZDA / Amazon EU)
- Servo Pan Tilt Kit (Amazon ZDA / Amazon EU)
Zahteve glede programske opreme:
- Python 2.7 (Moral bi biti nameščen, običajno ima OS Linux vnaprej nameščen)
- OpenCV (Lahko ga prenesete ločeno ali namestite s 'pip install' Razloženo naprej)
- pyserial (lahko ga namestite s pipom)
- numpy.
- Haarcascade.
Ko se vse zbere, lahko preidemo na korak namestitve …
2. korak: Nastavitev okolja Python:
Namestitev Pythona:
Zato najprej potrebujemo in zaženite Python 2.7. Če želite to narediti, najprej prenesite in namestite python 2.7.14. Če želite preveriti, ali je pravilno nameščen, pojdite na: Iskanje sistema Windows >> Vnesite "IDLE" >> Pritisnite Enter. Pojaviti bi se morala lupina Python.
ALI
Pri iskanju vnesite 'CMD' in pritisnite enter, da odprete ukazni poziv. V vrsti CMD >> python in pritisnite enter, bi se moral prikazati vmesnik Python.
Če vidite napako v CMD, brez panike, verjetno morate nastaviti spremenljivko okolja. Če želite nastaviti spremenljivko okolja, lahko sledite tej vadnici.
Namestitev "pyserial", "OpenCV" in "numpy" v python:
Za namestitev teh modulov bomo uporabili pip install, Najprej odprite CMD in vnesite naslednje kode:-
pip install serijski
pip install opencv-python> pip install numpy
ti ukazi bodo namestili potrebne module. Zdaj lahko preidemo na kodirni del …
3. korak: Python Script:
Preden začnete pisati kodo, najprej naredite novo mapo, saj je treba vso mapo shraniti v isto mapo. Zato ustvarite novo mapo, poimenujte jo karkoli želite. in od spodaj prenesite 'Haarcascade' in jo prilepite v mapo.
Zdaj odprite beležnico in napišite spodnji skript, shranite ga kot 'face.py' v isto mapo kot haarcascade. (Lahko prenesete kodo, ki sem jo posredoval spodaj):
#uvozite vse potrebne module
import numpy as np import serijski čas uvoza import sys import cv2 #Setup Komunikacijska pot za arduino (Namesto 'COM5' postavite vrata, na katera je povezan vaš arduino) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print ("Povezano z arduinom …") #uvoz Haarcascade za zaznavanje obrazov face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Za zajem videotoka iz spletne kamere. cap = cv2. VideoCapture (0) #Preberite posneto sliko, jo pretvorite v sivo sliko in poiščite obraze, medtem ko 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) grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) obrazov = face_cascade.detectMultiScale (sivo, 1.3) # zaznati obraz in okoli njega narediti pravokotnik. za (x, y, w, h) v obrazih: cv2.rectangle (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = siva [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)) # Center roi (Pravokotnik) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 tisk (xx) tisk (yy) center = (xx, yy) # pošiljanje podatkov v arduino print ("Center pravokotnika je:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" +data + "'") arduino.write (data) #Prikaži tok. cv2.imshow ('img', img) #Hit 'Esc' za prekinitev izvajanja k = cv2.waitKey (30) & 0xff če je k == 27: break
Ko to storite, nadaljujte s pisanjem kode za arduino …
4. korak: Koda Arduino:
Ko je skript python pripravljen, potrebujemo arduino skico za nadzor servo. Glejte spodnjo kodo, jo prilepite v Arduino IDE in jo shranite kot 'servo.ino' v isto mapo kot face.py in haarcascade. naložite kodo in pojdite na naslednji korak, da vzpostavite povezavo.
(Spodaj naložena datoteka)
#vključi
Servo servoVer; // Navpični servo servo servoHor; // Vodoravni servo int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Pritrdite navpični servo na pin 5 servoHor.attach (6); // Pritrdite vodoravni servo na pin 6 servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = map (x, 600, 0, 70, 179); int servoY = zemljevid (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 (); }}}
5. korak: Mehanizem nagiba:-
Za Pan-Tilt sem uporabil že na voljo komplet. Če želite, ga lahko naredite sami z uporabo lesa/plastike ali celo s 3D tiskanjem.
Ta, ki sem ga uporabil, je precej poceni in ga je zelo enostavno sestaviti. Če pa želite navodila, kako to storiti, jih lahko najdete tukaj.
6. korak: Vzpostavitev povezav:
Vezje je precej preprosto. Na arduino samo priključite dva servomotorja.
- Navpično na pin 5
- Vodoravno na pin 6
- Napajanje do +5V
- Ozemljitev do GND
Za referenco preverite diagram vezja.
7. korak: TESTIRANJE:
- Ko je vse narejeno, morate najprej preveriti, ali deluje. Najprej preverite, ali so servomotorji pravilno povezani z arduinom in je naložena skica.
- Ko naložite skico, zaprite IDE, da se vrata lahko prosto povežejo s pythonom.
- Zdaj odprite 'face.py' s Python IDLE in pritisnite 'F5', da zaženete kodo. Za povezavo z arduinom bo trajalo nekaj sekund, nato pa boste lahko videli okno, ki pretaka spletno kamero. Zdaj bo koda zaznala vaš obraz, servomotorji pa ji bodo sledili.
- Servo se mora premikati, ko premikate predmet. Zdaj samo pritrdite kamero na servomotorje, da se bo premikala skupaj s servomotorji.
Hvala vam.
Priporočena:
Sledenje in sledenje majhnim trgovinam: 9 korakov (s slikami)
Sledenje in sledenje za male trgovine: To je sistem, ki je namenjen majhnim trgovinam, ki naj bi se namestile na e-kolesa ali e-skuterje za pošiljke na kratke razdalje, na primer pekarna, ki želi dostaviti pecivo. Kaj pomeni sledenje in sledenje? Sledenje in sledenje je sistem, ki ga uporabljajo ca
Robot za sledenje liniji z uporabo Arduino Uno in L298N: 5 korakov
Robot za sledenje liniji z uporabo Arduino Uno in L298N: Line Flower je zelo preprost robot, idealen za elektroniko za začetnike
Naprava za sledenje obrazu! Python in Arduino: 5 korakov
Naprava za sledenje obrazu! Python & Arduino: Pozdravljeni vsi, ki berete ta navodila. To je naprava za sledenje obrazov, ki deluje v knjižnici python, imenovani OpenCV. CV pomeni "Computer Vision". Nato sem nastavil serijski vmesnik med računalnikom in Arduino UNO. Torej to pomeni
Sledenje variacijam pospeševanja z Raspberry Pi in MMA7455 z uporabo Pythona: 6 korakov
Sledenje variacijam pospeševanja z Raspberry Pi in MMA7455 z uporabo Pythona: Nisem se spotaknil, preizkušal sem gravitacijo. Še vedno deluje … Predstavitev pospešujočega vesoljskega plovila je pojasnila, da bi ura na najvišji točki shuttlea zaradi širjenja gravitacijskega časa izbrala hitreje kot ena na dnu. Nekateri
Pištola za sledenje obrazu: 4 koraki
Pištola za sledenje obrazu: Ta projekt je razširitev projekta laserske pištole, prikazane tukaj-https://www.instructables.com/id/Building-a-Sentry-Gun-with-Laser-Trip-Wire-System-/ ? ALLSTEPS Edina razlika je, da pištole ne bo sprožil laser, ampak