Satura rādītājs:

Sejas izsekošanas ierīce! Python un Arduino: 5 soļi
Sejas izsekošanas ierīce! Python un Arduino: 5 soļi

Video: Sejas izsekošanas ierīce! Python un Arduino: 5 soļi

Video: Sejas izsekošanas ierīce! Python un Arduino: 5 soļi
Video: Leap Motion SDK 2024, Novembris
Anonim
Image
Image
Sejas izsekošanas ierīce! Python un Arduino
Sejas izsekošanas ierīce! Python un Arduino
Sejas izsekošanas ierīce! Python un Arduino
Sejas izsekošanas ierīce! Python un Arduino

Autors: Techovator0819Mans Youtube kanālsSeko vairāk autoram:

IoT: laika apstākļu kaste (ar pielāgotiem signāliem un taimeriem)
IoT: laika apstākļu kaste (ar pielāgotiem signāliem un taimeriem)
IoT: laika apstākļu kaste (ar pielāgotiem signāliem un taimeriem)
IoT: laika apstākļu kaste (ar pielāgotiem signāliem un taimeriem)
Daudzfunkcionālais autonomais robots: “īpašums”
Daudzfunkcionālais autonomais robots: “īpašums”
Daudzfunkcionālais autonomais robots: “īpašums”
Daudzfunkcionālais autonomais robots: “īpašums”

Par: Man vienkārši patīk radīt jaunas lietas. Tāpat kā lietas, kas saistītas ar mikrokontrolleriem, mašīnbūvi, mākslīgo intelektu, datorzinātnēm un visu, kas mani interesē. Un šeit jūs atradīsiet visu … Vairāk par Techovator0819 »

Sveiki visiem, kas lasa šo pamācību. Šī ir sejas izsekošanas ierīce, kas darbojas python bibliotēkā ar nosaukumu OpenCV. CV apzīmē “Computer Vision”. Tad es izveidoju seriālo saskarni starp datoru un Arduino UNO. Tas nozīmē, ka tas nedarbojas tikai Python.

Šī ierīce atpazīst jūsu seju kadrā, pēc tam tā nosūta noteiktas komandas Arduino, lai novietotu kameru tā, lai tā paliktu rāmja iekšpusē! Izklausās forši? Tad lēksim tieši tajā.

Piegādes

1. Arduino UNO

2. 2 x servomotori (visi servomotori būs labi, bet es izmantoju Tower Pro SG90)

3. Python instalēšana

4. OpenCV instalēšana

5. Tīmekļa kamera

1. darbība: instalējiet Python un OpenCV

Python instalēšana ir diezgan vienkārša!

www.python.org/downloads/

Jūs varat sekot iepriekš minētajai saitei, lai lejupielādētu sev piemērotāko python versiju (Mac, Windows vai Linux) (64 bitu vai 32 bitu). Pārējais instalēšanas process ir vienkāršs, un jūs vadīsit saskarne.

Kad esat pabeidzis instalēšanu, atveriet komandu uzvedni un ierakstiet šo:

pip instalējiet opencv-python

Tam vajadzētu instalēt openCV bibliotēku. Problēmu novēršanas gadījumā varat apskatīt ŠO lapu.

Pēc vides un visu priekšnoteikumu iestatīšanas redzēsim, kā mēs to faktiski varam izveidot!

2. darbība. Kas ir Haar līdzīgas funkcijas?

Haar līdzīgas funkcijas ir digitālā attēla iezīmes. Nosaukums cēlies no Haar wavelets. Tās ir kvadrātveida viļņu saimes, kuras tiek izmantotas, lai identificētu digitālā attēla iezīmes. Haar kaskādes būtībā ir klasifikators, kas palīdz mums atklāt objektus (mūsu gadījumā sejas), izmantojot zaķim līdzīgās pazīmes.

Mūsu gadījumā vienkāršības labad mēs izmantosim iepriekš apmācītas Haar kaskādes, lai identificētu sejas. Jūs varat sekot ŠAI github lapas saitei un lejupielādēt Haar Cascade xml failu.

1. Noklikšķiniet uz "haarcascade_frontalface_alt.xml"

2. Koda loga augšējā labajā pusē noklikšķiniet uz pogas “Neapstrādāts”.

3. Tas novirzīs jūs uz citu lapu, kurā ir tikai teksts.

4. Ar peles labo pogu noklikšķiniet un noklikšķiniet uz Saglabāt kā..

5. Saglabājiet to tajā pašā direktorijā vai mapē, kurā atrodas Python kods, par kuru rakstāt.

3. darbība: kodēšana Python

importēt cv2

importēt numpy kā np importēt sērijveida importēšanas laiku

Mēs importējam visas nepieciešamās bibliotēkas.

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

Mēs izveidojam sērijas objektu ard. Mēs arī norādām porta nosaukumu un BaudRate kā parametrus.

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

Mēs izveidojam vēl vienu objektu mūsu Haar kaskādei. Pārliecinieties, ka HaarCascade fails paliek tajā pašā mapē kā šī python programma.

vid = cv2. VideoCapture (0)

Mēs izveidojam objektu, kas uzņem video no tīmekļa kameras. 0 kā parametrs nozīmē pirmo tīmekļa kameru, kas savienots ar manu datoru.

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

kamēr taisnība:

_, kadrs = vid.read ()#nolasa pašreizējo kadru uz mainīgo rāmi pelēks = cv2.cvtColor (kadrs, cv2. COLOR_BGR2GRAY) #konvertē rāmi -> pelēktoņu attēls#nākamajā rindā tiek noteiktas sejas. #Pirmais parametrs ir attēls, kuru vēlaties noteikt vietnē #minSize = () norāda sejas minimālo lielumu pikseļos #Noklikšķiniet uz iepriekš redzamās saites, lai uzzinātu vairāk par Kaskādes klasifikācijas sejām = face_cascade.detectMultiScale (pelēks, minSize = (80, 80), minKaimiņi = 3) #A cilpai seju noteikšanai. (x, y, w, h) sejās: cv2. taisnstūris (rāmis, (x, y), (x+w, y+h), (255, 0, 0), 2) #velk apkārt taisnstūri seja Xpos = x+(w/2) #aprēķina sejas centra X koordinātu. Ypos = y+(h/2) #kalkulē sejas centra Y koordinātu, ja Xpos> 280: #Tālāk norādītie koda bloki pārbauda, vai seja ir ard.write ('L'.encode ()) #on pa kreisi, pa labi, augšā vai apakšā attiecībā pret laiku.miega (0.01) #kadra centrs. elif Xpos 280: ard.write ("D". kodēt ()) laiks. miega (0.01) elifs Ypos <200: ard.write ("U". kodēt ()) laiks. miegs (0.01) cits: ard.write ('S'.kodēt ()) time.sleep (0.01) pauze cv2.imshow (' rāmis ', kadrs) #parāda rāmi atsevišķā logā. k = cv2.waitKey (1) & 0xFF if (k == ord ('q')): #ja 'q' ir nospiests uz tastatūras, tas iziet no cikla cikla. pārtraukums

cv2.destroyAllWindows () #aizver visus logus

ard.close () #slēdz sērijas sakarus

vid.release () #pārtrauc video saņemšanu no tīmekļa kameras.

4. solis: Arduino programmēšana

Jūtieties brīvi modificēt programmu atbilstoši savai aparatūras iestatīšanai atbilstoši savām vajadzībām.

#iekļaut

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

void setup () {

// ielieciet šeit savu iestatīšanas kodu, lai palaistu vienu reizi: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); kavēšanās (1000); }

char ievades = ""; // seriālā ievade tiek saglabāta šajā mainīgajā

void loop () {

// ielieciet šeit savu galveno kodu, lai palaistu atkārtoti: if (Serial.available ()) {// pārbauda, vai sērijveida bufera ievadē ir kādi dati = Serial.read (); // nolasa datus mainīgā, ja (ievade == 'U') {servoY.write (y+1); // pielāgo servo leņķi atbilstoši ieejai y += 1; // atjaunina leņķa vērtību} else if (input == 'D') {servoY.write (y-1); y -= 1; } cits {servoY.write (y); } ja (ievade == 'L') {servoX.write (x-1); x -= 1; } cits if (ievade == 'R') {servoX.write (x+1); x += 1; } cits {servoX.write (x); } ievade = ""; // notīra mainīgo} // process nepārtraukti atkārtojas !!:)}

5. darbība. Secinājums

Šis ir viens jauks un interaktīvs veids, kā jūs varat izstrādāt, iekļaujot datorvīziju savos Arduino projektos. Datora redze patiesībā ir diezgan jautra. Un es ļoti ceru, ka jums, puišiem, tas patika. Ja jā, paziņojiet man komentāros. Un, lūdzu, abonējiet manu youtube kanālu. Paldies jau iepriekš <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Ieteicams: