Mündəricat:

Üz İzləmə Cihazı! Python və Arduino: 5 addım
Üz İzləmə Cihazı! Python və Arduino: 5 addım

Video: Üz İzləmə Cihazı! Python və Arduino: 5 addım

Video: Üz İzləmə Cihazı! Python və Arduino: 5 addım
Video: Пошаговая установка Observium на Raspberry Pi 2024, Iyul
Anonim
Image
Image
Üz İzləmə Cihazı! Python və Arduino
Üz İzləmə Cihazı! Python və Arduino
Üz İzləmə Cihazı! Python və Arduino
Üz İzləmə Cihazı! Python və Arduino

Techovator0819 tərəfindən Youtube Kanalım Müəllif tərəfindən daha çox izləyin:

IoT: Hava Qutusu (Xüsusi Siqnallar və Taymerlərlə)
IoT: Hava Qutusu (Xüsusi Siqnallar və Taymerlərlə)
IoT: Hava Kutusu (Xüsusi Siqnallar və Taymerlərlə)
IoT: Hava Kutusu (Xüsusi Siqnallar və Taymerlərlə)
Çoxfunksiyalı Avtonom Robot: 'Aktiv'
Çoxfunksiyalı Avtonom Robot: 'Aktiv'
Çoxfunksiyalı Avtonom Robot: 'Aktiv'
Çoxfunksiyalı Avtonom Robot: 'Aktiv'

Haqqında: Yalnız yeni şeylər etməyi sevirəm. Mikro nəzarətçilər, maşınqayırma, Süni Zəka, Kompüter Elmləri və məni maraqlandıran hər şeylə əlaqəli şeylər kimi. Və burada hər şeyi tapa bilərsiniz … Techovator0819 haqqında daha çox »

Hamıya salam bu təlimatı oxuyan. OpenCV adlı bir python kitabxanasında işləyən bir üz izləmə cihazıdır. CV 'Computer Vision' deməkdir. Sonra kompüterimlə Arduino UNO arasında serial interfeys qurdum. Yəni bu, yalnız Python üzərində işləmir.

Bu cihaz üzünüzü çərçivədə tanıyır, sonra Arduinoya kameranı çərçivənin içində qalacaq şəkildə yerləşdirmək üçün müəyyən əmrlər göndərir! Sərin səslənir? Gəlin dərhal oraya girək.

Təchizat

1. Arduino UNO

2. 2 x Servo Motor (Hər hansı bir servo mühərrik yaxşı olacaq, amma Tower Pro SG90 istifadə etmişəm)

3. Python -un quraşdırılması

4. OpenCV -nin quraşdırılması

5. Veb Kamera

Addım 1: Python və OpenCV qurmaq

Python qurmaq olduqca sadədir!

www.python.org/downloads/

Sizə ən uyğun olan (64 bit və ya 32 bit) python versiyasını (Mac, Windows və ya Linux) yükləmək üçün yuxarıdakı linki izləyə bilərsiniz. Quraşdırma prosesinin qalan hissəsi sadədir və interfeyslə idarə olunacaqsınız.

Quraşdırmanı bitirdikdən sonra əmr satırınızı açın və aşağıdakıları yazın:

opencv-python quraşdırın

Bu, OpenCV kitabxanasını quraşdırmalıdır. Çətinliklə qarşılaşdığınız təqdirdə BU səhifəyə baxa bilərsiniz.

Ətraf mühiti və bütün ön şərtləri qurduqdan sonra görək bunu əslində necə qura bilərik!

Addım 2: Haar kimi xüsusiyyətlər nələrdir?

Haar kimi xüsusiyyətlər rəqəmsal görüntünün xüsusiyyətləridir. Adı Haar dalğaclarından gəlir. Rəqəmsal bir görüntünün xüsusiyyətlərini müəyyən etmək üçün istifadə olunan kvadrat formalı dalğalar ailəsidir. Haar kaskadları, haar kimi xüsusiyyətlərdən istifadə edərək cisimləri (bizim vəziyyətimizdə) aşkar etməyimizə kömək edən bir təsnifatdır.

Bizim vəziyyətimizdə, sadəlik üçün, üzləri müəyyən etmək üçün əvvəlcədən öyrədilmiş Haar Cascades istifadə edəcəyik. Bu github səhifəsinin BU linkini izləyə və Haar Cascade üçün xml faylını yükləyə bilərsiniz.

1. 'haarcascade_frontalface_alt.xml' üzərinə basın

2. Kod pəncərəsinin sağ üst hissəsindəki 'Raw' düyməsini basın.

3. Sizi yalnız mətni olan başqa bir səhifəyə yönləndirəcək.

4. Sağ klikləyin və 'kimi Saxla' düyməsini basın.

5. Yazmaq istədiyiniz python kodu ilə eyni qovluqda və ya qovluqda saxlayın.

Addım 3: Pythonda kodlaşdırma

idxal cv2

np idxal seriyalı idxal vaxtı kimi numpy idxal edin

Ehtiyacımız olan bütün kitabxanaları idxal edirik.

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

'Ard' adlı bir serial obyekti yaradırıq. Liman Adını və BaudRate'i də parametr olaraq təyin edirik.

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

Haar Cascade üçün başqa bir obyekt yaradırıq. HaarCascade faylının bu python proqramı ilə eyni qovluqda qaldığından əmin olun.

vid = cv2. VideoCapture (0)

Veb kameradan video çəkən bir obyekt yaradırıq. 0 olaraq parametr, kompüterimə qoşulan ilk veb kamera deməkdir.

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

Doğru halda:

_, frame = vid.read ()#cari çərçivəni dəyişən çərçivəyə oxuyur grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY)#çərçivəni çevirir -> boz rəngli şəkil#aşağıdakı sətir üzləri aşkar edir. #İlk parametr, #minSize = () üzərində üzün minimum ölçüsünü təyin etmək istədiyiniz şəkildir #Cascade Təsnifat üzləri haqqında daha çox məlumat əldə etmək üçün yuxarıdakı linki vurun = face_cascade.detectMultiScale (boz, minSize) = (80, 80), minNeighbors = 3) Üzləri aşkar etmək üçün loop üçün #A. üzlərdə (x, y, w, h) üçün: cv2.dörtbucaqlı (çərçivə, (x, y), (x+w, y+h), (255, 0, 0), 2)#ətrafa düzbucaqlı çəkir üz Xpos = x+(w/2)#üz mərkəzinin X koordinatını hesablayır. Ypos = y+(h/2) #Xpos> 280 olduqda üzün mərkəzinin Y koordinatını hesablayır: #Aşağıdakı kod blokları üzün ard.write ('L'.encode ()) #on olduğunu yoxlayır saata görə sol, sağ, yuxarı və ya aşağı.yuxu (0.01) #çərçivənin mərkəzi. elif Xpos 280: ard.write ('D'.encode ()) time.sleep (0.01) elif Ypos <200: ard.write (' U'.encode ()) time.sleep (0.01) other: ard.write ('S'.encode ()) time.sleep (0.01) break cv2.imshow (' frame ', frame)#çərçivəni ayrı bir pəncərədə göstərir. k = cv2.waitKey (1) & 0xFF if (k == ord ('q')):: #if 'q' klaviaturada basıldıqda while döngəsindən çıxır. fasilə

cv2.destroyAllWindows () #bütün pəncərələri bağlayır

ard.close () #serial əlaqəsini bağlayır

vid.release () #veb kameradan video almağı dayandırır.

Addım 4: Arduino proqramlaşdırılması

Proqramı ehtiyaclarınıza uyğun olaraq qurğunuza uyğun olaraq dəyişdirə bilərsiniz.

#daxil edin

Servo servoX;

Servo xidmət;

int x = 90;

int y = 90;

boş quraşdırma () {

// quraşdırma kodunuzu buraya qoyun, bir dəfə işləsin: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); gecikmə (1000); }

char girişi = ""; // serial girişi bu dəyişəndə saxlanılır

boşluq döngəsi () {

// əsas kodunuzu bura qoyun, təkrar işləsin: if (Serial.available ()) {// seriyalı tampon girişində hər hansı bir məlumatın olub olmadığını yoxlayır = Serial.read (); // məlumatları bir dəyişənə oxuyur, əgər (input == 'U') {servoY.write (y+1); // y += 1 girişinə görə servo bucağını tənzimləyir; // bucağın dəyərini yeniləyir} else if if (input == 'D') {servoY.write (y-1); y -= 1; } başqa {servoY.write (y); } if (input == 'L') {servoX.write (x-1); x -= 1; } başqa əgər (giriş == 'R') {servoX.write (x+1); x += 1; } başqa {servoX.write (x); } giriş = ""; // dəyişəni təmizləyir} // proses təkrarlanmağa davam edir !!:)}

Addım 5: Nəticə

Bu, Arduino layihələrinizə Kompüter Vizyonunu daxil edə biləcəyiniz dizayn edə biləcəyiniz gözəl və interaktiv bir yoldur. Computer Vision əslində olduqca əyləncəlidir. Və ümid edirəm ki, bəylər bəyəndiniz. Bəli, şərhlərdə mənə bildirin. Və zəhmət olmasa youtube kanalıma abunə olun. Əvvəlcədən təşəkkürlər <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Tövsiyə: