Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-23 15:08
Avtor: Techovator0819My Youtube ChannelSledite Več avtorja:
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:
Sledenje obrazu z uporabo ARDUINO !!!: 7 korakov
Sledenje obrazu z uporabo programa ARDUINO !!!: V prejšnjem navodilu sem delil, kako lahko komunicirate med Arduinom in Pythonom z uporabo 'pyserial' modula in nadzorujete LED. Če ga niste videli, preverite tukaj: KOMUNIKACIJA MED ARDUINOM & PITON! In kako lahko zaznate barvo o
Naprava ASS (protidruštvena socialna naprava): 7 korakov
Naprava ASS (antisocialna družabna naprava): recimo, da ste nekakšna oseba, ki je rada v bližini ljudi, vendar jim ni všeč, da bi se jim približali. Prav tako ste ljubitelj ljudi in težko rečete ne ljudem. Zato ne veste, kako jim reči, naj odstopijo. No, vnesite - naprava ASS! Y
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
Naprava za sledenje soncu: 25 korakov
Naprava za sledenje soncu: Če sledite tem korakom, boste lahko ustvarili in izvedli sončno ploščo, ki bo svoj položaj prilagodila soncu. To omogoča največjo količino energije, ujete čez dan. Naprava lahko zazna moč li
Surova naprava za sledenje iz GPS-a in dvosmernih radijskih postaj: 7 korakov
Surova naprava za sledenje iz GPS-a in dvosmernih radijskih sprejemnikov: Torej, želel sem dobiti napravo za sledenje. Takoj, ko sem pogledal na trg, sem spoznal, da se cene ene od teh stvari začnejo pri roki in segajo do noge ali več! Norost je treba ustaviti! Zagotovo načela vedeti, kje nekaj