Naprava za sledenje obrazu! Python in Arduino: 5 korakov
Naprava za sledenje obrazu! Python in Arduino: 5 korakov
Anonim
Image
Image
Naprava za sledenje obrazu! Python in Arduino
Naprava za sledenje obrazu! Python in Arduino
Naprava za sledenje obrazu! Python in Arduino
Naprava za sledenje obrazu! Python in Arduino

Avtor: Techovator0819My Youtube ChannelSledite Več avtorja:

IoT: Weather Box (s alarmi in časovniki po meri)
IoT: Weather Box (s alarmi in časovniki po meri)
IoT: Weather Box (s alarmi in časovniki po meri)
IoT: Weather Box (s alarmi in časovniki po meri)
Večnamenski avtonomni robot: "sredstvo"
Večnamenski avtonomni robot: "sredstvo"
Večnamenski avtonomni robot: "sredstvo"
Večnamenski avtonomni robot: "sredstvo"

O: Zelo rad ustvarjam nove stvari. Tako kot stvari, ki se ukvarjajo z mikrokrmilniki, strojništvom, umetno inteligenco, računalništvom in vsem, kar me zanima. In tukaj boste našli vse… Več o Techovator0819 »

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. To pomeni, da to ne deluje samo na Pythonu.

Ta naprava prepozna vaš obraz v okvirju, nato pa pošlje določene ukaze Arduinu, da kamero postavi tako, da ostane v okvirju! Sliši se kul? Pa pojdimo takoj.

Zaloge

1. Arduino UNO

2. 2 x servo motorji (Vsi servo motorji bodo v redu, vendar sem uporabil Tower Pro SG90)

3. Namestitev Pythona

4. Namestitev programa OpenCV

5. Spletna kamera

1. korak: Namestitev Pythona in OpenCV

Namestitev Pythona je precej preprosta!

www.python.org/downloads/

Sledite zgornji povezavi in naložite različico pythona (Mac, Windows ali Linux), ki vam najbolj ustreza (64 -bitna ali 32 -bitna). Preostali postopek namestitve je preprost in skozi vmesnik vas bo vodil.

Ko končate namestitev, odprite ukazni poziv in vnesite naslednje:

pip namestite opencv-python

To bi moralo namestiti knjižnico openCV. V primeru odpravljanja težav si lahko ogledate TO stran.

Ko smo nastavili okolje in vse predpogoje, poglejmo, kako lahko to dejansko zgradimo!

2. korak: Kaj so značilnosti, podobne Haaru?

Haar podobne lastnosti so značilnosti digitalne slike. Ime izvira iz Haarjevih valčkov. To je družina valov kvadratne oblike, ki se uporabljajo za identifikacijo značilnosti digitalne slike. Haar kaskade so v bistvu klasifikator, ki nam pomaga zaznati predmete (v našem primeru obraze) z uporabo značilnosti, podobnih haarju.

V našem primeru bomo zaradi poenostavitve za identifikacijo obrazov uporabili vnaprej usposobljene Haar kaskade. Sledite tej povezavi strani github in prenesete datoteko xml za Haar Cascade.

1. Kliknite »haarcascade_frontalface_alt.xml«

2. Kliknite gumb 'Raw' v zgornjem desnem kotu okna za kodo.

3. Preusmeril vas bo na drugo stran s samo besedilom.

4. Z desno tipko miške kliknite »Shrani kot..«

5. Shranite ga v isti imenik ali mapo, kot jo ima koda python, o kateri pišete.

3. korak: Kodiranje v Pythonu

uvoz cv2

import numpy kot np uvoz serijski čas uvoza

Uvažamo vse knjižnice, ki jih potrebujemo.

ard = serial. Serial ("COM3", 9600)

Ustvarjamo serijski objekt z imenom 'ard'. Kot parametra podajamo tudi ime vrat in BaudRate.

face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')

Ustvarimo še en predmet za našo Haar Cascade. Prepričajte se, da datoteka HaarCascade ostane v isti mapi kot ta program python.

vid = cv2. VideoCapture (0)

Ustvarjamo predmet, ki posname video s spletne kamere. 0 kot parameter pomeni prvo spletno kamero, priključeno na moj računalnik.

docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html

medtem ko je res:

_, frame = vid.read ()#bere trenutni okvir spremenljivemu okvirju grey = cv2.cvtColor (okvir, cv2. COLOR_BGR2GRAY)#pretvori okvir -> slika v sivinah#naslednja vrstica zazna obraze. #Prvi parameter je slika, ki jo želite zaznati pri #minSize = () določa najmanjšo velikost obraza v pikslih #Kliknite zgornjo povezavo, če želite izvedeti več o Cascade Classification obrazov = face_cascade.detectMultiScale (siva, minSize = (80, 80), minNeighbors = 3) #A for zanka za zaznavanje obrazov. za (x, y, w, h) v obrazih: cv2.rectangle (okvir, (x, y), (x+w, y+h), (255, 0, 0), 2)#nariše pravokotnik okoli obraz Xpos = x+(w/2)#izračuna koordinato X središča obraza. Ypos = y+(h/2) #izračuna koordinato Y središča obraza, če je Xpos> 280: #Naslednji bloki kode preverijo, ali je obraz ard.write ('L'.encode ()) #on levo, desno, zgoraj ali spodaj glede na čas. spanje (0,01) #center okvirja. 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) #prikaže okvir v ločenem oknu. k = cv2.waitKey (1) & 0xFF if (k == ord ('q')): #če na tipkovnici pritisnete 'q', zapušča zanko while. prekiniti

cv2.destroyAllWindows () #zapre vsa okna

ard.close () #zapira serijsko komunikacijo

vid.release () #preneha prejemati videoposnetek s spletne kamere.

4. korak: Programiranje Arduina

Program lahko spremenite glede na nastavitve strojne opreme, ki ustrezajo vašim potrebam.

#vključi

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

void setup () {

// tukaj vstavite nastavitveno kodo, ki jo želite zagnati enkrat: Serial.begin (9600); servoX.priključek (9); servoY.priključek (10); servoX.write (x); servoY.write (y); zamuda (1000); }

char input = ""; // serijski vnos je shranjen v tej spremenljivki

void loop () {

// vnesite svojo glavno kodo sem, da se zažene večkrat: if (Serial.available ()) {// preveri, ali so v vhodu serijskega vmesnega pomnilnika kakšni podatki = Serial.read (); // bere podatke v spremenljivko if (input == 'U') {servoY.write (y+1); // prilagodi kot servo glede na vhod y += 1; // posodobi vrednost kota} else if (input == 'D') {servoY.write (y-1); y -= 1; } else {servoY.write (y); } if (input == 'L') {servoX.write (x-1); x -= 1; } else if (input == 'R') {servoX.write (x+1); x += 1; } else {servoX.write (x); } input = ""; // počisti spremenljivko} // postopek se ponavlja !!:)}

5. korak: Zaključek

To je en lep in interaktiven način, s katerim lahko oblikujete računalniško vizijo v svojih projektih Arduino. Računalniški vid je pravzaprav zelo zabaven. In upam, da vam je bilo všeč. Če je odgovor pritrdilen, mi to sporočite v komentarjih. Prosim, naročite se na moj youtube kanal. Hvala že vnaprej <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Priporočena: