Sadržaj:

Uređaj za praćenje lica! Python & Arduino: 5 koraka
Uređaj za praćenje lica! Python & Arduino: 5 koraka

Video: Uređaj za praćenje lica! Python & Arduino: 5 koraka

Video: Uređaj za praćenje lica! Python & Arduino: 5 koraka
Video: MJC School. We are ready to help you become a programmer. 2024, Juli
Anonim
Image
Image
Uređaj za praćenje lica! Python i Arduino
Uređaj za praćenje lica! Python i Arduino
Uređaj za praćenje lica! Python i Arduino
Uređaj za praćenje lica! Python i Arduino

Autor Techovator0819Moj Youtube kanal Slijedi Više od autora:

IoT: Weather Box (sa prilagođenim alarmima i tajmerima)
IoT: Weather Box (sa prilagođenim alarmima i tajmerima)
IoT: Weather Box (sa prilagođenim alarmima i tajmerima)
IoT: Weather Box (sa prilagođenim alarmima i tajmerima)
Višenamjenski autonomni robot: 'imovina'
Višenamjenski autonomni robot: 'imovina'
Višenamjenski autonomni robot: 'imovina'
Višenamjenski autonomni robot: 'imovina'

O: Volim stvarati nove stvari. Poput stvari koje se tiču mikrokontrolera, mašinstva, umjetne inteligencije, računarstva i svega što me zanima. I ovdje ćete pronaći sve… Više o Techovator0819 »

Pozdrav svima koji čitaju ovo uputstvo. Ovo je uređaj za praćenje lica koji radi na Python biblioteci pod nazivom OpenCV. CV znači „Computer Vision“. Zatim sam postavio serijsko sučelje između svog računala i mog Arduino UNO -a. To znači da ovo ne radi samo na Pythonu.

Ovaj uređaj prepoznaje vaše lice u okviru, a zatim šalje određene naredbe Arduinu da postavi kameru na takav način da ostane unutar kadra! Zvuči super? Uđimo onda u to.

Supplies

1. Arduino UNO

2. 2 x servo motora (Svi servo motori će biti u redu, ali koristio sam Tower Pro SG90)

3. Instaliranje Pythona

4. Instaliranje OpenCV -a

5. Web kamera

Korak 1: Instalirajte Python i OpenCV

Instaliranje Pythona prilično je jednostavno!

www.python.org/downloads/

Možete slijediti gornju vezu za preuzimanje verzije pythona (Mac, Windows ili Linux) koja vam najviše odgovara (64 ili 32 bita). Ostatak instalacijskog procesa je jednostavan i vodiće vas kroz sučelje.

Kada završite instalaciju, otvorite naredbeni redak i upišite sljedeće:

pip install opencv-python

To bi trebalo instalirati biblioteku openCV. U slučaju rješavanja problema, možete provjeriti OVU stranicu.

Nakon što smo postavili okruženje i sve preduvjete, da vidimo kako to zapravo možemo izgraditi!

Korak 2: Koje su karakteristike slične Haaru?

Karakteristike poput haara su karakteristike digitalne slike. Ime dolazi od Haar wavelets. Ovo je porodica valova kvadratnog oblika koji se koriste za identifikaciju karakteristika na digitalnoj slici. Haar kaskade su u osnovi klasifikator koji nam pomaže u otkrivanju objekata (u našem slučaju lica) pomoću značajki sličnih haarima.

U našem slučaju, radi jednostavnosti, upotrijebit ćemo unaprijed obučene Haar kaskade za identifikaciju lica. Možete slijediti OVU vezu stranice github-a i preuzeti xml datoteku za Haar kaskadu.

1. Kliknite na 'haarcascade_frontalface_alt.xml'

2. Kliknite na dugme 'Raw' u gornjem desnom dijelu prozora koda.

3. Preusmjerit će vas na drugu stranicu sa samo tekstom.

4. Desni klik i pritisnite 'Save as..'

5. Sačuvajte ga u istom direktoriju ili fascikli kao i kod python koda o kome pišete.

Korak 3: Kodiranje u Pythonu

import cv2

import numpy kao np uvoz serijsko vreme uvoza

Uvozimo sve potrebne biblioteke.

ard = serijski. Serijski ("COM3", 9600)

Kreiramo serijski objekt pod nazivom 'ard'. Kao parametre navodimo i naziv porta i BaudRate.

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

Stvaramo još jedan objekt za našu Haar Cascade. Pobrinite se da HaarCascade datoteka ostane u istoj mapi kao i ovaj python program.

vid = cv2. VideoCapture (0)

Izrađujemo objekt koji snima videozapise s web kamere. 0 kao parametar znači prva web kamera spojena na moj računar.

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

dok je True:

_, frame = vid.read ()#čita trenutni okvir u varijablu frame grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY)#pretvara okvir -> slika u sivim tonovima#sljedeća linija otkriva lica. #Prvi parametar je slika koju želite otkriti na #minSize = () određuje minimalnu veličinu lica u smislu piksela #Kliknite gornju vezu da saznate više o Cascade Classification lica = face_cascade.detectMultiScale (sivo, minSize = (80, 80), minNeighbors = 3) #A for petlja za otkrivanje lica. za (x, y, w, h) u licima: cv2.rectangle (okvir, (x, y), (x+w, y+h), (255, 0, 0), 2)#povlači pravokutnik oko lice Xpos = x+(w/2)#izračunava X koordinatu središta lica. Ypos = y+(h/2) #izračunava Y koordinatu središta lica ako je Xpos> 280: #Sljedeći blokovi koda provjeravaju je li lice ard.write ('L'.encode ()) #on lijevo, desno, odozgo ili odozdo s obzirom na vrijeme.spavanje (0,01) #središte kadra. 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)#prikazuje okvir u zasebnom prozoru. k = cv2.waitKey (1) & 0xFF if (k == ord ('q')): #ako se na tipkovnici pritisne 'q', izlaz iz while petlje. break

cv2.destroyAllWindows () #zatvara sve prozore

ard.close () #zatvara serijsku komunikaciju

vid.release () #prestaje primati video sa web kamere.

Korak 4: Programiranje Arduina

Slobodno izmijenite program prema postavkama hardvera koje odgovaraju vašim potrebama.

#include

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

void setup () {

// ovdje postavite svoj kôd za postavljanje, da biste ga jednom pokrenuli: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); kašnjenje (1000); }

char input = ""; // serijski ulaz je pohranjen u ovoj varijabli

void loop () {{100} {101}

// ovde unosite svoj glavni kod, da bi se ponavljao: if (Serial.available ()) {// proverava da li se neki podaci nalaze u serijskom međuspremniku input = Serial.read (); // čita podatke u varijablu if (input == 'U') {servoY.write (y+1); // podešava kut servo prema ulazu y += 1; // ažurira vrijednost kuta} 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 = ""; // briše varijablu} // proces se stalno ponavlja !!:)}

Korak 5: Zaključak

Ovo je jedan lijep i interaktivan način na koji možete dizajnirati uključivanje Computer Vision u svoje Arduino projekte. Computer Vision je zapravo prilično zabavan. I zaista se nadam da vam se svidelo. Ako da, javite mi u komentarima. I pretplatite se na moj youtube kanal. Hvala unapred <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Preporučuje se: