Satura rādītājs:
- Piegādes
- 1. darbība: instalējiet Python un OpenCV
- 2. darbība. Kas ir Haar līdzīgas funkcijas?
- 3. darbība: kodēšana Python
- 4. solis: Arduino programmēšana
- 5. darbība. Secinājums
Video: Sejas izsekošanas ierīce! Python un Arduino: 5 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:54
Autors: Techovator0819Mans Youtube kanālsSeko vairāk autoram:
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:
ASS ierīce (antisociāla sociālā ierīce): 7 soļi
ASS ierīce (antisociāla sociāla ierīce): sakiet, ka esat tāds cilvēks, kuram patīk atrasties cilvēku tuvumā, bet nepatīk, ka viņi nāk pārāk tuvu. Jūs arī esat cilvēku baudītājs un jums ir grūti pateikt cilvēkiem nē. Tātad jūs nezināt, kā viņiem pateikt atkāpties. Nu, ievadiet - ASS ierīce! Y
Sejas atpazīšana un identifikācija - Arduino sejas ID, izmantojot OpenCV Python un Arduino .: 6 soļi
Sejas atpazīšana un identifikācija | Arduino sejas ID, izmantojot OpenCV Python un Arduino .: Sejas atpazīšana AKA sejas ID ir viena no svarīgākajām mūsdienu mobilo tālruņu funkcijām. Tātad, man radās jautājums " vai man var būt sejas ID savam Arduino projektam " un atbilde ir jā … Mans ceļojums sākās šādi: 1. solis: piekļuve mums
Sejas izsekošanas lielgabals: 4 soļi
Sejas izsekošanas lielgabals: Šis projekts ir paplašinājums no šeit redzamā lāzera triecienpistoles projekta-https://www.instructables.com/id/Building-a-Sentry-Gun-with-Laser-Trip-Wire-System-/ ? ALLSTEPS Vienīgā atšķirība ir tā, ka lielgabals netiks iedarbināts ar lāzeru, bet gan ar
Saules izsekošanas ierīce: 25 soļi
Saules izsekošanas ierīce: veicot šīs darbības, jūs varēsit izveidot un ieviest saules paneli, kas pielāgo tā novietojumu atbilstoši saulei. Tas ļauj maksimāli uzņemt enerģijas daudzumu visas dienas garumā. Ierīce spēj sajust li stiprumu
Neapstrādāta izsekošanas ierīce no GPS un divvirzienu radio: 7 soļi
Neapstrādāta izsekošanas ierīce no GPS un divvirzienu radio: Tātad, es gribēju iegūt izsekošanas ierīci. Tiklīdz es paskatījos tirgū, es sapratu, ka cenas par vienu no šīm lietām sākas pie rokas un paceļas līdz kājai vai vairāk! Vājprāts ir jāpārtrauc! Protams, principi zināt, kur kaut ko es